我現在開始學習一些紅寶石,正在做Ruby Koans練習。然後我卡在代碼:在ruby代碼中assert fido.methods.size> 0的含義是什麼?
def test_objects_have_methods
fido = Dog.new
assert fido.methods.size > 0
end
我很困惑fido.methods
。它指的是什麼?
謝謝!
我現在開始學習一些紅寶石,正在做Ruby Koans練習。然後我卡在代碼:在ruby代碼中assert fido.methods.size> 0的含義是什麼?
def test_objects_have_methods
fido = Dog.new
assert fido.methods.size > 0
end
我很困惑fido.methods
。它指的是什麼?
謝謝!
它返回對實例fido
所有調用方法的陣列。
我沒有用它在生產,但它可以是相當不錯的調試或編寫怪異腳本時。
有上一切優秀的文檔。 Object#methods
:
返回的OBJ公共和保護的方法的名稱列表。這將包括obj的祖先可以訪問的所有方法。如果可選參數爲
false
,它返回的OBJ的公共和保護單方法陣列,該陣列將不包括包含在OBJ模塊的方法。
既然你是在Dog
例如,顯然是從Object
衍生調用它,方法列表包括所有這些,對Object
定義。
謝謝!但在這種情況下,'fido'沒有任何方法,因此大小爲0?但是代碼表示大小大於0? – Penny
對不起,我能再問你一個問題嗎?代碼「def fido.wag:fidos_wag end」中的':fidos_wag'是什麼?它是一個屬性?或者是其他東西? – Penny
fido是班級狗的一個實例。 「Dog」類繼承自「Object」,它爲其提供了大量的默認方法。像'nil?','is_a?','object_id'和類似的東西。因此,大小不會爲0 – Albin