【发布时间】:2014-03-10 16:08:24
【问题描述】:
我尝试从方法自己的实现中调用abstract 函数。
[<AbstractClass>]
type CallAnAbstract () =
let doSomethingElse () = printfn "Done Something.."
abstract doSomethingAbstract: unit -> unit
member this.DoSomething =
printfn "Done Something.."
doSomethingElse ()
doSomethingAbstract ()
导致错误:
错误 FS0039:值或构造函数 'doSomethingAbstract' 不是 定义
从方法自己的实现中调用抽象函数是非法的还是问题出在其他地方?
如果这是非法的, here(见答案)@Mark Seemann 解释了组合而不是继承:
[<AbstractClass>]
type UseComposition (doSomethingElseDefinedLater) =
let doSomethingElse () = printfn "Done Something.."
member this.DoSomething =
printfn "Done Something.."
doSomethingElse ()
doSomethingElseDefinedLater ()
有哪些选择?我会避免通过构造函数传递函数,并且我想重用一些代码,让DoSomething 有“一些实现”,直到调用抽象函数。
【问题讨论】: