我在Ruby的新手,我想不通爲什麼當我運行這個Ruby腳本,數字類和方法的缺失
class Numeric
def method_missing(arg)
puts self
end
end
puts 5
返回
[...]
5
我認爲自己應該只返回[...]
,因爲沒有參數傳入。
謝謝!
我在Ruby的新手,我想不通爲什麼當我運行這個Ruby腳本,數字類和方法的缺失
class Numeric
def method_missing(arg)
puts self
end
end
puts 5
返回
[...]
5
我認爲自己應該只返回[...]
,因爲沒有參數傳入。
謝謝!
puts
以特殊方式處理數組。因此,puts 5
嘗試呼叫5.to_ary
,並在執行method_missing
時,它使用參數:to_ary
進行調用。
在method_missing
以內您可以撥打puts self
,相當於puts 5
。這是Ruby顯示爲[...]
的遞歸。
這遞歸陣列產生相同的輸出:
ary = []
#=> []
ary << ary
#=> [[...]]
所以'puts 5'中的'5'被視爲ruby中的數組? –
是的,因爲'5'響應'to_ary'(通過'method_missing') – Stefan
'[...]'這是什麼意思?我的猜測是,這是一遍又一遍地調用自己的遞歸。那麼這很多'5'? –
順便說一句,你爲什麼* 「認爲自己應該只返回'[...]'」 *?起初我很驚訝。 – Stefan
我以爲''[']'意味着紅寶石數組。所以我認爲它應該返回一個空數組。 –
有趣的問題! –