파이핑 매개 변수가 선으로 연결되는 것은 하나의 매개 변수를 허용하는 함수에서만 작동합니까? 우리가 Chris Smiths' page의 예를 보면, F에있는 라인에 다른 매개 변수를 파이핑
// Using the Pipe-Forward operator (|>)
let photosInMB_pipeforward =
@"C:\Users\chrsmith\Pictures\"
|> filesUnderFolder
|> Seq.map fileInfo
|> Seq.map fileSize
|> Seq.fold (+) 0L
|> bytesToMB
함수가 다음이 작동하지 않습니다 즉,
let filesUnderFolder size rootFolder
을 두 개의 매개 변수를 기다리고 있었다 어떤 경우 자신의 filesUnderFolder의 기능은 rootFolder 매개 변수, 을 기다리고 있었다 :
// 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
내가
을 정의 할 수 있기 때문에 let inline (>>) f g x y = g(f x y)
여러 입력 매개 변수가있는 함수로 파이프 라인 연산자를 사용할 수 있어야한다고 생각하십니까? 내가 뭘 놓치고 있니?
덕분에 gradbot 덕분에 은 파이프 라인에서 반환 된 값입니다. 객체로 처리 할 수 있습니까? 크기, @ "C : \ Users \ chrsmith \ Pictures \" ||> filesUnderFolder |> .GetLength() – demokritos
개체로는 아니지만'(|>) '로 새 함수를 만들 수 있습니다. 연산자를 사용하는 경우에도 F #에서 인수로 멤버 함수를 전달하는 일반적인 방법은 없습니다. 그것을 함수로 묶어야합니다. 'size, @ "C : \ Users \ chrsmith \ Pictures \"||> filesUnderFolder |> (재미있는 x-> x.GetLength())' – gradbot