假设我有一堆矢量类型(la XNA),其中一些有静态成员Cross
:
type Vector3 =
...
static member Cross (a : Vector3, b : Vector3) = new Vector3(...)
我可以定义cross
函数并编译:
let inline cross (x : ^T) (y : ^T) = (^T : (static member Cross : (^T * ^T) -> ^T) ((x,y)))
不幸的是我无法使用它并出现以下错误:
let res = cross a b
^
成员或对象构造函数Cross 需要2个参数但在这里给出 1.所需的签名是静态成员Vector3.Cross: a:Vector3 * b:Vector3 - > 的Vector3
甚至可能吗?谢谢你的帮助!
答案 0 :(得分:5)
您的静态成员签名过于括号。试试这个:
let inline cross (x : ^T) (y : ^T) =
(^T : (static member Cross : ^T * ^T -> ^T) (x,y))
根据你的定义,F#正在寻找一个成员Cross
,它接受一个元组类型的参数。