String.Join
es un método .NET. Al usar un método .NET, F # lo ve como una función que toma una tupla como argumento (cuando lo llama, escribe parámetros como f(a, b)
). El operador |>
se puede usar con funciones que usan el formulario cursado de parámetros (y puede llamarse escribiendo f a b
).
Usted puede utilizar una función String.concat
de la biblioteca # F (que hace lo mismo) en su lugar:
["a"; "b"] |> String.concat "+"
EDITARFile.WriteAllLines
es el mismo caso. Si desea utilizarlo como parte de una tubería, se puede escribir una función # F que envuelve la llamada:
let writeAllLines file (lines:seq<string>) =
System.IO.File.WriteAllLines(file, lines)
En general, se puede utilizar |>
con métodos .NET sólo si desea escribir todos los argumentos de el lado izquierdo del operador. Puede, por ejemplo, escribir:
("+", ["a"; "b"]) |> System.String.Join
... pero eso no encaja con el uso habitual del operador de tuberías. Cuando se trabaja con la API .NET, generalmente es mejor usar un estilo de programación similar a C# (sin canalización), porque la canalización solo funciona bien con bibliotecas funcionales.
¡Gracias! Por cierto, ¿hay algo de suerte con 'File.WriteAllLines'? –
o ... cualquier método .Net no funcionará con '|>'? –
@modosansreves: He agregado respuestas a sus otras preguntas. –