您在F#中使用什么指标进行会员申报?我更喜欢
member a.MethodName
此是多个字母,否则 x 。
答案 0 :(得分:11)
我几乎总是使用x
作为此实例的名称。除了它比其他选项更短的事实之外,没有任何逻辑。
我见过的选项是:
member x.Foo // Simply use (short) 'x' everywhere
member ls.Foo // Based on type name as Benjol explains
member this.Foo // Probably comfortable for C# developers
member self.Foo // I'm not quite sure where this comes from!
member __.Foo // Double underscore to resemble 'ignore pattern'
// (patterns are not allowed here, but '__' is identifier)
基于类型名称的选项有一定意义(当你在一个类型中嵌套对象表达式时很好),但我认为为每个类型名称找到合理的两个/三个缩写可能非常困难。 / p>
答案 1 :(得分:3)
没有系统。不知道我是否应该有一个,我相信很快就会出现一本关于自己的书的范例。我倾向于使用类型名称的第一个字母,如Benjol。
这是F#的一个自由度,我们可以清楚地做到。 :)
答案 2 :(得分:1)
我倾向于使用某种表示类型的首字母:
type LaserSimulator =
member ls.Fire() =
答案 3 :(得分:1)
我在很大程度上倾向于使用self.MethodName
,原因是self
在我最常使用的另一种语言中按惯例表示当前实例:Python。想想看,我使用Delphi已经有一段时间了,他们也有self
而不是this
。
我一直在尝试转换为x.MethodName
样式,类似于我正在学习的两本书: Real World Functional Programming 和 Expert F#。到目前为止,我没有成功,主要是因为在方法正文中引用x
而不是self
(或this
)仍然让我困惑。
我想我所说的是应该有一个有意义的约定。使用this
或self
已被其他语言标准化。而我个人并不认为三字母经济有用。
答案 4 :(得分:1)
由于我在.NET世界工作,我倾向于使用“this”,因为大多数遇到F#的.NET人都会理解它的含义。当然,那把剑的另一个优势是他们可能会认为“这个”是必需的形式。
抛开.NET自我文档问题,我想我更喜欢:“x”,或者像Benjol一样 - 类名的缩写(例如SuffixTrie的“st”等)。 / p>答案 5 :(得分:0)
我使用的逻辑是:如果我没有在成员定义中使用实例引用,我使用双下划线('__'),一个la let-binding表达式。如果我在定义中引用实例(我不经常这样做),我倾向于使用'x'。