4

元组通过以下方式传递:

let a = (1,2)
let f a b = ()
a ||> f

三元组由以下管道传输:

let a = (1,2,3)
let f a b c = ()
a |||> f

但这不适用于四倍:

let a = (1,2,3,4)
let f a b c d= ()
a ||||> f

你如何通过管道将四元组传递给函数?

4

2 回答 2

11

其他由 F# 定义,对于 4 元组,您需要自己定义:

let a = (1,2,3,4)
let f a b c d = printfn "got %A %A %A %A" a b c d

let inline (||||>) (a,b,c,d) f = f a b c d

a ||||> f
于 2012-04-11T21:32:01.863 回答
4

你可以用无聊的方式来做,或者......

let a = (1,2,3,4)
let f a b c d = ()
let g = OptimizedClosures.FSharpFunc<_,_,_,_,_>.Adapt(f)
a |> g.Invoke
于 2012-04-11T21:44:15.957 回答