代码之家  ›  专栏  ›  技术社区  ›  Jules

如何在F中创建具有其他方法的接口#

  •  1
  • Jules  · 技术社区  · 17 年前

    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

    但这种类型的要点是成员是抽象的。我做错了什么?

    1 回复  |  直到 17 年前
        1
  •  6
  •   ssp    17 年前

    [<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