gpt4 book ai didi

f# - 从方法自己的实现中调用抽象函数

转载 作者:行者123 更新时间:2023-12-02 04:34:15 24 4
gpt4 key购买 nike

我试过调用abstract从方法自己的实现中运行。

[<AbstractClass>]
type CallAnAbstract () =

let doSomethingElse () = printfn "Done Something.."

abstract doSomethingAbstract: unit -> unit

member this.DoSomething =
printfn "Done Something.."
doSomethingElse ()
doSomethingAbstract ()

导致错误:

error FS0039: The value or constructor 'doSomethingAbstract' is not defined

从方法自身的实现中调用抽象函数是非法的还是问题出在其他地方?

如果是非法的, here (查看答案)@Mark Seemann 解释了组合优于继承:

[<AbstractClass>]
type UseComposition (doSomethingElseDefinedLater) =

let doSomethingElse () = printfn "Done Something.."

member this.DoSomething =
printfn "Done Something.."
doSomethingElse ()
doSomethingElseDefinedLater ()

有哪些选择?我会避免通过构造函数传递函数,我想重用一些代码,让 DoSomething 有“一些实现”,直到调用抽象函数。

最佳答案

您需要使用一个this 引用:

this.doSomethingAbstract()

关于f# - 从方法自己的实现中调用抽象函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22305328/

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