¿Está el parámetro de tubería en línea funcionando solo para funciones que aceptan un parámetro? Si nos fijamos en el ejemplo de la Chris Smiths' page,Tubería de otro parámetro en la línea en F #
// Using the Pipe-Forward operator (|>)
let photosInMB_pipeforward =
@"C:\Users\chrsmith\Pictures\"
|> filesUnderFolder
|> Seq.map fileInfo
|> Seq.map fileSize
|> Seq.fold (+) 0L
|> bytesToMB
donde su función filesUnderFolder esperaba único parámetro RootFolder, lo que si la función estaba esperando dos parámetros, es decir
let filesUnderFolder size rootFolder
Entonces esto no funciona :
// Using the Pipe-Forward operator (|>)
let size= 4
let photosInMB_pipeforward =
@"C:\Users\chrsmith\Pictures\"
|> filesUnderFolder size
|> Seq.map fileInfo
|> Seq.map fileSize
|> Seq.fold (+) 0L
|> bytesToMB
Como yo puedo definir
let inline (>>) f g x y = g(f x y)
Creo que debería ser capaz de utilizar el operador de tuberías con funciones que tienen múltiples parámetros de entrada, ¿verdad? ¿Qué me estoy perdiendo?
muchas gracias gradbot, es el valor devuelto en la tubería, ¿puedo tratarlo como un objeto? algo así como: tamaño, @ "C: \ Users \ chrsmith \ Pictures \" ||> filesUnderFolder |> .GetLength() – demokritos
Como objeto no, pero podría crear una nueva función con '(|>)' operador, tampoco hay una manera general de pasar una función miembro como argumento en F #. Tienes que envolverlo en una función. 'size, @" C: \ Users \ chrsmith \ Pictures \ "||> filesUnderFolder |> (diversión x -> x.GetLength())' – gradbot