gpt4 book ai didi

f# - F# 中的类型推断

转载 作者:行者123 更新时间:2023-12-01 09:05:35 26 4
gpt4 key购买 nike

在 F# 中,为什么我的 add 函数没有添加两个 float

let add a b = a+b

(add 3 4) //returns 7
(add 3.5 5.5) //error

还请解释类型推断在 F# 中的工作原理。

谢谢。

最佳答案

你必须让它内联。

let inline add a b = a+b

问题是 + 是一个内联运算符,所以如果你的函数 add 不是内联的,它将采用默认的重载,即 int。

看看这个答案Use of `inline` in F#

当函数被声明为内联时,类型推断将推断静态类型约束。

val inline add :
^a -> ^b -> ^c
when ( ^a or ^b) : (static member ( + ) : ^a * ^b -> ^c)

所以现在 a 和 b 可以是使用该签名实现静态成员 (+) 的任何类型。

关于f# - F# 中的类型推断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8370551/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com