F#抽象类类型成员表达式可以是“抽象覆盖”吗?

时间:2018-05-15 10:23:42

标签: f#

您可以在C#抽象类中声明方法abstract override。您可以这样做以强制派生类型提供System.Object的基本方法的实现,如ToString()。在C#中看起来像这样:

public abstract class Base
{
    public abstract override string ToString();
}

这可能在F#中吗?

2 个答案:

答案 0 :(得分:3)

我不确定F#是否等同于abstract override。你可以这样做以获得相同的行为:

[<AbstractClass>]
type Base() =
    abstract GetString: unit -> string
    override this.ToString() = this.GetString()

然后你只需在派生类型中覆盖GetString

答案 1 :(得分:3)

F#规范说明了以下关于抽象成员的内容:

  

抽象成员定义的格式为:

     

abstract access opt member-sig

因此,似乎不可能。