ben*_*ruk 20 f# language-features
虽然我理解F#中的自我标识符,但我对这种灵活性的好处感到困惑.为什么F#不仅仅this.Blah像C#一样支持并且完成它?我猜有些人用它来提高可读性,但即便如此,这似乎是一个延伸.那么,这种语言功能的用途/好处是什么?
对于未启动的,下面是一个定义类型范围的自身标识符"self"和方法范围标识符"this"的示例.该示例来自上面链接的MSDN文章.
type MyClass2(dataIn) as self =
let data = dataIn
do
self.PrintMessage()
member this.PrintMessage() =
printf "Creating MyClass2 with Data %d" data
Run Code Online (Sandbox Code Playgroud)
kvb*_*kvb 17
一个小优点是您可以使用它们来区分对象表达式this与创建对象表达式的对象表达式:
type IExample = abstract GetAnObject : unit -> obj
type MyClass() =
member outer.Example1 = { new IExample with member inner.GetAnObject() = upcast inner }
member outer.Example2 = { new IExample with member inner.GetAnObject() = upcast outer }
Run Code Online (Sandbox Code Playgroud)
一个潜在的哲学原因是它使得它似乎与this任何其他论证都没有太大的不同.如果你应该能够命名其他参数(而不是被迫使用arg1,arg2等等),那么为什么你不能随意命名第一个参数呢?