假设我有一组支持给定成员函数的类型,例如下面的
假设成员属性为每种类型返回一个整数。现在,我想编写一个通用函数,可以执行以下操作:
Property
成员:type FooA = {...} with
member this.Property = ...
type FooB = {...} with
member this.Property = ...
假设成员属性为每种类型返回一个整数。现在,我想编写一个通用函数,可以执行以下操作:
let sum (a: 'T) (b: 'U) = a.Property + b.Property
我习惯用C++编写以下内容:
template<typename T, typename U>
int sum(T a, U b)
{
return a.Property + b.Property;
}
在F#中,等效的实现方式是什么?
let inline xval (x : ^a when ^a :> XObject) : ^b = ((^a or ^b) : (static member op_Explicit : ^a -> ^b) x)
然后我可以像这样做:let foo:int = xval myElement
- Joel Mueller