如何创建与F#的其他方法
问题描述:
我试图创建需要对IEvent之上附加的方法,这样的接口的接口:如何创建与F#的其他方法
type Varying<'t> =
abstract member Get : unit -> 't
abstract member Set : 't -> unit
abstract member AddHandler : Handler<'t> -> unit
abstract member RemoveHandler : Handler<'t> -> unit
member v.Add(f) = v.AddHandler(new Handler<_>(fun _ x -> f x))
interface IEvent<'t> with
member c.AddHandler(h) = c.AddHandler(h)
member c.RemoveHandler(h) = c.RemoveHandler(h)
member c.Add(f) = c.Add(f)
我加入了Get
& Set
方法。问题是,F#编译器要我实现抽象成员:
没有执行被赋予了“抽象成员Varying.AddHandler:处理器<‘T> - >单元’
但这种类型的一点是该成员是抽象的。我究竟做错了什么?
答
您可以[<AbstractClass>]
标签添加到您的定义:
> [<AbstractClass>]
- type Varying<'t> =
- abstract member Get : unit -> 't
- abstract member Set : 't -> unit
- abstract member AddHandler : Handler<'t> -> unit
- abstract member RemoveHandler : Handler<'t> -> unit
- member v.Add(f) = v.AddHandler(new Handler<_>(fun _ x -> f x))
- interface IEvent<'t> with
- member c.AddHandler(h) = c.AddHandler(h)
- member c.RemoveHandler(h) = c.RemoveHandler(h)
- member c.Add(f) = c.Add(f)
- ;;
type Varying<'t> =
class
abstract member AddHandler : Handler<'t> -> unit
abstract member Get : unit -> 't
abstract member RemoveHandler : Handler<'t> -> unit
abstract member Set : 't -> unit
interface IEvent<'t>
member Add : f:('t -> unit) -> unit
end