這個片斷:爲什麼Ruby公共和私人關鍵字/方法返回Object?
a = private
p a
p a.class
給我:
Object
Class
我不知道是否private
和public
是關鍵字或Ruby的方法,但是,爲什麼他們返回Object
(我指的是類)?這種奇怪的行爲有歷史或實際的原因嗎?
我用Ruby 2.1,Rubinius的2.2.6和JRuby 1.7.12測試這一點。
這個片斷:爲什麼Ruby公共和私人關鍵字/方法返回Object?
a = private
p a
p a.class
給我:
Object
Class
我不知道是否private
和public
是關鍵字或Ruby的方法,但是,爲什麼他們返回Object
(我指的是類)?這種奇怪的行爲有歷史或實際的原因嗎?
我用Ruby 2.1,Rubinius的2.2.6和JRuby 1.7.12測試這一點。
這是因爲它們不是關鍵字,而是在模塊上定義的方法:http://www.ruby-doc.org/core-2.1.2/Module.html#method-i-private。它們返回一個接收到調用的模塊,如果您在應用程序的頂層調用它,則此接收器是Object類。
非常感謝!但是我錯過了一件小事:爲什麼他們返回'''self'''而不是他們改變了可見性的方法? –
@le_me - 它們無法返回它們更改爲私有的方法,因爲當方法在不帶參數的情況下執行時,尚未定義這些方法。 'self'是從這些方法返回的唯一邏輯對象。 – BroiSatse
沒問題,非常感謝;) –
檢查它的行爲對Rubinius的相同和JRuby是很勤快。但是他們的行爲與MRI相同的事實表明行爲與這些特定的實現無關,但是它是Ruby編程語言本身的一種固有行爲,所以我刪除了這些標記。 –
好吧,我只是想確保它不是標準ruby解釋器的一些奇怪行爲;) –