rob*_*kuz 5 f# type-constraints
我如何覆盖Zero以下代码中的方法,以便我可以返回Euro(0)到中的定义type Euro
[<AbstractClass>]
type Currency () =
abstract member Zero<'T when 'T :> Currency > : unit -> 'T
type Euro (value: int) =
inherit Currency()
member this.Value = value
override this.Zero() = Euro(0) :> _
Run Code Online (Sandbox Code Playgroud)
您是否尝试将通用约束提升到类级别?
[<AbstractClass>]
type Currency<'T when 'T :> Currency<'T>>() =
abstract member Zero : unit -> 'T
type Euro (value: int) =
inherit Currency<Euro>()
member this.Value = value
override this.Zero() = Euro(0)
Run Code Online (Sandbox Code Playgroud)
虽然自我引用的泛型对我来说总是很奇怪,但这就是它在C#中的表现方式.