vik*_*ata 4 f# inline function definition
没有类型规范,F#函数定义似乎只接收int类型.我不想使用泛型编程,只想声明一个函数来接收2个浮点类型,将它们加在一起:
> let g a b=a+b;;
val g : a:int -> b:int -> int
Run Code Online (Sandbox Code Playgroud)
如何改变我的陈述?谢谢.
您可以向结果或参数添加类型注释以将推断类型更改为float.
let f1 x y : float = x + y
let f2 (x: float) y = x + y
val f1 : x:float -> y:float -> float
val f2 : x:float -> y:float -> float
Run Code Online (Sandbox Code Playgroud)
或者您可以使用内联函数
let inline f x y = x + y
val inline f :
x: ^a -> y: ^b -> ^c
when ( ^a or ^b) : (static member ( + ) : ^a * ^b -> ^c)
Run Code Online (Sandbox Code Playgroud)
如您所见,内联函数适用于任何具有+运算符的类型
f 1 2
f 1.4 1.2
f "foo" "bar"
Run Code Online (Sandbox Code Playgroud)