为什么我不能使用显式类型来管道函数

Kon*_*rad 2 f#

我是F#初学者

作品:

let add x y = x + y
let x : decimal = 2 |> add 3
Run Code Online (Sandbox Code Playgroud)

不起作用:

let add (x : decimal, y : decimal) = x + y
let x : decimal = 2m |> add 3m
Run Code Online (Sandbox Code Playgroud)

Ser*_*kiy 7

因为(x : decimal, y : decimal)是两位小数的元组.你的功能的签名是decimal * decimal -> decimal.即它接受单个parater(元组)并返回十进制值.

您需要传递两个参数: (x : decimal) (y : decimal)

let add (x : decimal) (y : decimal) = x + y // decimal -> decimal -> decimal
let x = 2m |> add 3m
Run Code Online (Sandbox Code Playgroud)

记住,如果你,在F#中看到,那么你正在看元组.此处不将逗号用作参数分隔符.