2012-03-26 70 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