F#实例语法

时间:2010-10-12 08:34:49

标签: f#

您在F#中使用什么指标进行会员申报?我更喜欢

member a.MethodName

是多个字母,否则 x

6 个答案:

答案 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)仍然让我困惑。

我想我所说的是应该有一个有意义的约定。使用thisself已被其他语言标准化。而我个人并不认为三字母经济有用。

答案 4 :(得分:1)

由于我在.NET世界工作,我倾向于使用“this”,因为大多数遇到F#的.NET人都会理解它的含义。当然,那把剑的另一个优势是他们可能会认为“这个”是必需的形式。

抛开.NET自我文档问题,我想我更喜欢:“x”,或者像Benjol一样 - 类名的缩写(例如SuffixTrie的“st”等)。 / p>

答案 5 :(得分:0)

我使用的逻辑是:如果我没有在成员定义中使用实例引用,我使用双下划线('__'),一个la let-binding表达式。如果我在定义中引用实例(我不经常这样做),我倾向于使用'x'。