在下面的例子中,我使用的是Type缩写.为什么我应该使用fun关键字,而不是在没有fun关键字的情况下调用它?
type AdditionFunction = int->int->int
let f:AdditionFunction = fun a b -> a + b
Run Code Online (Sandbox Code Playgroud)
因为否则你不能用AdditionFunction类型注释它.您需要将它放在具有类型的值上int -> int -> int,而F#语法的工作方式是您无法使用let-bound样式执行此操作.
你的选择是:
let f : int -> int -> int =
fun a b -> ...
let f a : int -> int =
fun b -> ...
let f a b : int =
...
Run Code Online (Sandbox Code Playgroud)
并且只有第一个具有可以用别名替换的类型.
但最终你不需要这样做.您可以将其定义为一个int -> int -> int函数,并且您仍然可以在任何使用它的地方使用它AdditionFunction.
在一天结束时,类型别名就是 - 别名.它们可以与它们所代表的类型互换使用,并在编译期间被删除.