gpt4 book ai didi

f# - 在 F# 中覆盖继承的成员

转载 作者:行者123 更新时间:2023-12-05 00:33:35 26 4
gpt4 key购买 nike

下面的代码产生“t1 t1 t2”。我想知道是否有人可以告诉我如何更改它以获得“t1 t2 t2”。在 t2 中使用“覆盖”而不是“成员”是错误的,我不明白为什么。我非常乐意使用 RTFM,如果我知道在哪里以及在什么 FM 中查看就好了。

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

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 ()

最佳答案

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

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 ()

关于f# - 在 F# 中覆盖继承的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11812250/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com