我有一个带有两个参数的构造函数的类型:
type Foo = Foo of int * int
Run Code Online (Sandbox Code Playgroud)
我可以用一个元组来称呼它(int, int)
.
let foo = Foo(1,2)
Run Code Online (Sandbox Code Playgroud)
但在我的情况下,我想部分应用构造函数在管道中使用它
let someFunc param =
calculateSomeInt param
|> Foo 42 //error
Run Code Online (Sandbox Code Playgroud)
但这是不可能的,因为构造函数不能以curry形式调用.
是否有可能告诉F#我想要以咖喱形式构造函数而不必定义新函数let fooCtr a b = Foo (a,b)
?
不,没有.let fooCtr a b = Foo (a,b)
您在问题中提到的方法是唯一的方法.(我可能会称之为makeFoo
或更好,mkFoo
而不是fooCtr
我自己,因为我觉得功能名称应该是动词,但这是个人风格偏好).