2012-03-26 98 views
0

我真的很困惑如何在Ruby类中命名方法名称。如果我创建像一个存取: attr_accessor:命名与Ruby访问器方法混淆

它创建的方法: 名称 和 名称=

但是当我调用第二方法与“名称”之间的空格和“=”它的工作原理

'n.name ='和'n.name ='都可以。

我读过Ruby忽略空格的地方。那么,为什么当我用空格调用它时,我写的一个方法不起作用?

高清的getName 结束

如果我把这种方式,这是行不通的。为什么? t.get name

我并不感到惊讶,因为它不起作用。但我很困惑setter方法(name =)如何工作呢?

在此先感谢。

回答

3

安装程序是Ruby中特别的。

实际上,定义以等号结尾的方法名称使该名称有资格出现在赋值的左侧。

http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_classes.html

分配在红宝石定义为:

赋值语句设置变量或属性在其左侧(左值)来表示的值在右边(右值)。

http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html

所以n.name=直接调用二传手name=

n.name =正在使用setter的这种特殊处理方式,因为它以=结尾,以便您可以在赋值中将它用作左值(即它可以出现在左侧)。

1

getName是方法的名称,所以你不能有空白,因为它认为它是两个方法或可能是一个参数,这就是为什么我们camal的情况下,使它可读。但等号是一个操作数,并且可以有空格。它与“2 + 2”和“2 + 2”相同。 希望有帮助

+0

但是在setter中,=是方法名称的一部分。不是吗? – HungryCoder 2012-03-26 05:55:44

+0

在Ruby中,变量和方法名称应该是小写,单词应该用下划线分隔。强烈建议不要使用骆驼案例,除非在课程名称中。 – 2012-03-26 11:51:10