我有一个带有一个通用参数的基本函数:
let func<'T> (x:'T when 'T : (static member op_Explicit: 'T -> float) ) =
float x
为什么会出现错误:“声明的类型参数 'T 不能在此处使用,因为类型参数无法在编译时解析”
在这个例子中,我提供了一个通用参数并限制它能够显式地转换为浮点数,并且所有的函数都被转换为浮点数,那么问题是什么?我已经阅读了所有与 F# 中的泛型相关的 MSDN 文档,但它们似乎只是绕圈子,与我在 Visual Studio 中看到的行为不符。据我了解,使用单引号语法'T
适用于运行时泛型,而不是编译时泛型。
这让我想到了另一个问题。我经常看到有'T
和^T
没有inline
. 这与有关这些语法定义的 MSDN 文档背道而驰。我错过了什么吗?
此外,从文档来看,似乎应该能够自动推断出op_Explicit
对类型的约束,而无需任何类型注释:'T
let func x =
float x
但在这种情况下x
推断出的类型是。int