为什么我不能使用显式类型来传递函数

时间:2018-12-18 11:32:07

标签: f#

我是F#初学者

作品:

let add x y = x + y
let x : decimal = 2 |> add 3

不起作用:

let add (x : decimal, y : decimal) = x + y
let x : decimal = 2m |> add 3m

1 个答案:

答案 0 :(得分:7)

因为(x : decimal, y : decimal)是两个小数的元组。函数的签名为decimal * decimal -> decimal。即它接受单个参数(元组)并返回十进制值。

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

let add (x : decimal) (y : decimal) = x + y // decimal -> decimal -> decimal
let x = 2m |> add 3m

请记住,如果您在F#中看到,,那么您正在查看元组。此处,逗号不用作参数定界符。