gpt4 book ai didi

f# - F# 中如此灵活的 "self-identifiers"有什么好处?

转载 作者:行者123 更新时间:2023-12-02 13:57:14 26 4
gpt4 key购买 nike

虽然我明白self-identifiers在 F# 中,我对这种灵 active 的好处感到困惑。为什么 F# 不像 C# 那样只支持 this.Blah 并结束它?我猜有些人用它来提高可读性,但即使这样似乎也有些牵强。那么,这种语言功能的用途/好处是什么?

对于不懂的人来说,下面是一个定义类型范围自身标识符“self”和方法范围标识符“this”的示例。该示例取自上面链接的 MSDN 文章。

type MyClass2(dataIn) as self =
let data = dataIn
do
self.PrintMessage()
member this.PrintMessage() =
printf "Creating MyClass2 with Data %d" data

最佳答案

一个小优点是,您可以使用它们来区分对象表达式的 this 和创建它的类型的 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 }

一个潜在的哲学原因是,它使 this 引用看起来与任何其他参数没有太大不同。如果您应该能够命名其他参数(而不是被迫使用 arg1、arg2 等),那么为什么您不能命名第一个参数也可以吗?

关于f# - F# 中如此灵活的 "self-identifiers"有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5355334/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com