f# - F# 中的自标识符是否有标准命名约定?

标签 f# naming-conventions this self

这个问题在这里已经有了答案:





Should I use, this, self or something else for self identifiers in type definitions?

(2 个回答)


8年前关闭。




关于 F# 自我标识符的如下:

type MyClass2 =
   let data = 123

   member whateverYouWant.PrintMessage() =
       printf "MyClass2 with Data %d" data

F# class documentation说:

Unlike in other .NET languages, you can name the self identifier however you want; you are not restricted to names such as self, Me, or this.



(问题 What are the benefits of such flexible "self-identifiers" in F#? 的答案解释了这可能的用处。)

我的问题是,是否有关于如何命名自我标识符的非官方标准?也就是说,虽然可能没有规定性约定,但是否有关于 F# 程序员在野外做什么的描述性约定? this ? x ? self ?

更新

看起来这可能会关闭,但另一个问题的答案几乎不是答案,因为它只是显示了我已经知道的多个选项。我正在寻求共识。此外,这个问题是在 2009 年提出的,当时可能没有达成共识,而现在可能有共识。

同样有趣的是这本书 Expert F# 3.0由 Don Syme 撰写的示例中没有使用一致的自我标识。相反,它似乎更喜欢单字母自我标识符,尤其是字母 x .

最佳答案

type MyClass2 as self =
   let data = 123

   let privatePrintMessage() = self.PrintMessage()

   member this.PrintMessage() =
       printf "MyClass2 with Data %d" data

有些人用member x.Name ,但这是错误的,因为 x没有解释它是什么,对于 F# 中最常用的名称之一 - 自我标识符应该是不言自明的!

也有人选择写member __.Name当不需要自我标识符时。那些通常是确保没有未使用的标识符的人(使用 --warnon:1182 很容易做到)。其他人说这很奇怪或者会导致不一致——选择你喜欢的。

关于f# - F# 中的自标识符是否有标准命名约定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15378914/

相关文章:

asynchronous - f# async 什么时候检查它的 CancellationToken?

recursion - F# 迭代嵌套字典

f# - FSharp FAKE - 跟踪进程输出

android - android应用程序包名可以包含非英文字符吗?

this.x = x; 的 C++ 非类作用域替换;

f# - 通过任务选择在目标中生成的 ItemGroup 文件的位置

c++ - 受 void* 影响的属性函数样式约定

java - setter/getter 的正确命名约定

javascript - 获取自定义事件的 "this"引用

javascript - 如何获取调用函数/对象的上下文?