相关疑难解决方法(0)

为什么F#中没有受保护的访问修饰符?

有没有更好的方法在F#中建模数据以避免需要它?

f#

39
推荐指数
2
解决办法
3910
查看次数

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

我试图从方法自己的实现中调用抽象函数.

[<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在调用抽象函数之前有"一些实现".

f# abstract

2
推荐指数
1
解决办法
150
查看次数

标签 统计

f# ×2

abstract ×1