如何创建与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