String.Join
est une méthode .NET. Lors de l'utilisation d'une méthode .NET, F # la considère comme une fonction qui prend un tuple comme argument (lorsque vous l'appelez, vous écrivez les paramètres comme f(a, b)
). L'opérateur |>
peut être utilisé avec des fonctions qui utilisent le forme currid de paramètres (et peut être appelée en écrivant f a b
).
Vous pouvez utiliser une fonction String.concat
de la bibliothèque F # (ce qui fait la même chose) à la place:
["a"; "b"] |> String.concat "+"
EDITFile.WriteAllLines
est le même cas. Si vous voulez l'utiliser dans le cadre d'un pipeline, vous pouvez écrire une fonction F # qui enveloppe l'appel:
let writeAllLines file (lines:seq<string>) =
System.IO.File.WriteAllLines(file, lines)
En général, vous pouvez utiliser |>
avec des méthodes .NET uniquement si vous voulez écrire tous les arguments sur le côté gauche de l'opérateur. Vous pouvez par exemple écrire:
("+", ["a"; "b"]) |> System.String.Join
... mais cela ne correspond pas à l'utilisation habituelle de l'opérateur de pipeline. Lorsque vous travaillez avec l'API .NET, il est généralement préférable d'utiliser un style de programmation similaire à C# (sans pipeline), car le pipeline fonctionne bien uniquement avec les bibliothèques fonctionnelles.
Merci! Par ailleurs, un peu de chance avec 'File.WriteAllLines'? –
ou ... toute méthode .Net ne fonctionnera pas avec '|>'? –
@modosansreves: J'ai ajouté des réponses à vos autres questions. –