Este código invierte una cadena:¿Puedo usar el operador de canalización en F # para pasar un argumento a un constructor?
let reverse (s : string) = new string(s.ToCharArray() |> Array.rev)
puede esto ser reescrito usando el operador de canalización para pasar el argumento necesario para la string()
constructor? Por ejemplo, esto parece más idiomática:
// Doesn't compile:
let reverse (s : string) = s.ToCharArray() |> Array.rev |> new string
Del mismo modo, ¿por qué no puedo utilizar el operador string
de la siguiente manera?
let reverse2 (s : string) = s.ToCharArray() |> Array.rev |> string
Aquí está en acción:
> reverse2 "foo" ;;
val it : string = "System.Char[]"
Devuelve el tipo en lugar de "Fuera de la oficina".
posible duplicado de [Uso del símbolo de tubería F # con un constructor de objetos] (http://stackoverflow.com/questions/531178/using-the-f-pipe-symbol-with-an-object-constructor) – gradbot
This debería ser posible en F # 4.0 cuando salga: http://blogs.msdn.com/b/fsharpteam/archive/2014/11/12/announcing-a-preview-of-f-4-0-and-the -visual-f-tools-in-vs-2015.aspx –