type Foo(...) =
...
let a = Array.create 10 (new Foo())
let sum = Array.sum a
答案 0 :(得分:10)
您需要添加sum
函数使用的一些成员来进行计算:
type Foo(value:int) =
member x.Value = value
// Two members that are needed by 'Array.sum'
static member (+) (a:Foo, b:Foo) = Foo(a.Value + b.Value)
static member Zero = Foo(0)
// Not needed for 'Array.sum', but allows 'Array.average'
static member DivideByInt(a:Foo, n:int) = Foo(a.Value / n)
sum
函数以Zero
返回的值开头,然后使用重载的Foo
运算符+
添加average
的值,然后将结果除一个整数):
let a = Array.init 10 (fun n -> Foo(n))
let sum = Array.sum a
sum.Value // Returns 45
答案 1 :(得分:-1)
不可能。
如果要使用Array(sum等)的任何方法,则必须使用数组类型进行数据存储。
编辑:我误解了你的问题。您可能希望尝试实现某些运算符重载,例如+, - 等。也许类型将支持sum方法。