Eug*_*ene 4 inheritance f# functional-programming
为什么 F# 中没有“override val”这样的东西?在语言规范中,我在第 155 页上看到它 https://fsharp.org/specs/language-spec/4.1/FSharpSpec-4.1-latest.pdf
但它看起来并没有进入语法: https ://learn.microsoft.com/en-us/dotnet/fsharp/language-reference/inheritance
override valF# 中有一种东西,它确实融入了语言中。第 155 页的示例编译如下:
type MyBase () =
abstract Property : string with get, set
default val Property = "default" with get, set
type MyDerived() =
inherit MyBase()
override val Property = "derived" with get, set
Run Code Online (Sandbox Code Playgroud)
在 FSI 中输入以下内容表明覆盖的内容val已正确访问并返回:
> type MyBase =
new: unit -> MyBase
abstract Property: string
override Property: string
type MyDerived =
inherit MyBase
new: unit -> MyDerived
override Property: string
> MyDerived().Property;;
val it: string = "derived"
Run Code Online (Sandbox Code Playgroud)
不过我同意,文档也应该提到它。充其量你可以说它是隐含的,其中(在“接口”下)它说你可以使用valor 成员与overrideor default。这当然应该改进。