gpt4 book ai didi

f# - 需要帮助了解 F# 类语法

转载 作者:行者123 更新时间:2023-12-04 18:13:41 25 4
gpt4 key购买 nike

这是关于 F# 类语法的一个非常基本的问题。这是一个小代码来说明我的问题。

type AClass() as self =
member this.Something = printfn "Hello"

基本上从我所读到的“as self”将为当前实例创建一个名称,该名称可以在整个类中使用(如 C# 或 Java 中的“this”)。但是“member this.Something”会做同样的事情,只是范围仅限于方法体。我想我可以看到你什么时候会使用哪种语法。如果您在构造函数或其他东西中需要它,可以使用“as self”,如果您在构造函数中不需要它,则可以使用另一个。

但是,即使我使用了“as self”,为什么还要使用“member this.Something”语法呢?如果我只写“member Something”,为什么它会给我一个错误?我错过了什么?

小心,
克尔

最佳答案

as self的范围|是整个类(class),而 this.Something 的范围只是个人方法。您并不经常需要 as self自从使用 this.Something是足够的。

关于为什么需要 this.在成员声明中,我认为这是一个自然的选择,因为在 F# 类中,您通常也有 let 边界和静态方法。有self默认情况下会导致混淆和误用。

这是一个使用 as self 的示例在 MSDN ,这在 IMO 中并不常见:

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

关于f# - 需要帮助了解 F# 类语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12129278/

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