gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 21:30:53 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