在下面的代码,请注意get_Zero类型的约束:
type Wrapper<'t> = { Data : 't[] }
let compute<'t
when 't : (static member get_Zero : unit -> 't)
and 't : (static member (~-) : 't -> 't)
and 't : (static member (+) : 't * 't -> 't)>
(wrapper : Wrapper<'t>) =
wrapper.Data
|> Seq.mapi (fun i value -> (i, value))
|> Seq.sumBy (fun (i, value) ->
if i % 2 = 0 then value
else -value)
尽管我已经有一个明确的类型约束,我仍然获得在调用Seq.sumBy以下编译器错误:
A型参数丢失一个约束 '时^ T:(静态成员get_Zero: - > ^ T)'
任何人都知道是怎么回事吗? 谢谢。