我试图从方法自己的实现中调用抽象函数.
[<AbstractClass>]
type CallAnAbstract () =
let doSomethingElse () = printfn "Done Something.."
abstract doSomethingAbstract: unit -> unit
member this.DoSomething =
printfn "Done Something.."
doSomethingElse ()
doSomethingAbstract ()
Run Code Online (Sandbox Code Playgroud)
这导致错误:
错误FS0039:未定义值或构造函数"doSomethingAbstract"
从方法自己的实现调用抽象函数是非法的还是问题出在其他地方?
如果这是非法的, 这里(见答案)@Mark Seemann解释了继承的构成:
[<AbstractClass>]
type UseComposition (doSomethingElseDefinedLater) =
let doSomethingElse () = printfn "Done Something.."
member this.DoSomething =
printfn "Done Something.."
doSomethingElse ()
doSomethingElseDefinedLater ()
Run Code Online (Sandbox Code Playgroud)
有哪些替代方案?我避免通过构造函数传递函数,我想重用一些代码,DoSomething在调用抽象函数之前有"一些实现".