首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重写F#中继承的成员

重写F#中继承的成员
EN

Stack Overflow用户
提问于 2012-08-05 05:53:48
回答 1查看 1.4K关注 0票数 4

下面的代码生成"t1 t1 t2“。我想知道有没有人可以告诉我怎样才能得到"t1 t2 t2“。在t2中使用"override“而不是"member”是错误的,我不明白为什么。我非常乐意使用RTFM,如果我知道在哪里和在什么FM中查找就好了。

非常感谢,如果我错过了为什么我想要的东西不可能实现的一些基本原因,我很抱歉。

代码语言:javascript
复制
type myinterface =
   abstract member doit : unit -> unit

type t1 () =
   interface myinterface with
      member x.doit () = printf "t1\n"

type t2 () =
    inherit t1 ()

    member x.doit () = printf "t2\n"

let override_test () =
    let t1 = t1 () :> myinterface
    let t2 = t2 ()
    let t2i = t2 :> myinterface
    t1.doit ()
    t2i.doit ()
    t2.doit ()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-05 06:01:14

这应该具有您想要的行为:

代码语言:javascript
复制
type myinterface =
    abstract member doit : unit -> unit

type T1 () =
    interface myinterface with
        member x.doit () = printfn "t1"

type T2 () =
    inherit T1 ()
    member x.doit () = printfn "t2"
    interface myinterface with
        member x.doit () = x.doit ()

let override_test () =
    let t1i = T1() :> myinterface
    let t2 = T2()
    let t2i = t2 :> myinterface
    t1i.doit ()
    t2i.doit ()
    t2.doit ()
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11812250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档