2
在鋒紅寶石的第一章,拉斯·奧爾森寫道:Ruby中是否有類獨立的方法?
的
Float
方法變爲它的參數,通常是一個字符串成浮點數。
紅寶石新手我的印象是Ruby方法通過定義屬於類,使得例如Fixnum
和Array
各自具有它們自己單獨的:is_a?
(大概包括的共享碼更大或更小的量),但「通常是一個字符串」意味着Float
是可以在不同類的對象上調用的單一方法。有人可以澄清一下情況嗎?
在鋒紅寶石的第一章,拉斯·奧爾森寫道:Ruby中是否有類獨立的方法?
的
Float
方法變爲它的參數,通常是一個字符串成浮點數。
紅寶石新手我的印象是Ruby方法通過定義屬於類,使得例如Fixnum
和Array
各自具有它們自己單獨的:is_a?
(大概包括的共享碼更大或更小的量),但「通常是一個字符串」意味着Float
是可以在不同類的對象上調用的單一方法。有人可以澄清一下情況嗎?
Float
是一個類和method in Kernel
。默認情況下,所有Ruby對象都包含Kernel
模塊,這意味着您可以從任意位置調用Float
方法。
class Foo
def to_f
42.0
end
end
Float Foo.new # => 42.0
謝謝您的回答:
的
Float
方法將是無論是Float
,Fixnum
,String
,或任何其他具有to_f
方法對象(此方法必須返回一個Float
)參數工作! 「或任何其他具有to_f方法的對象」 - 因爲Float是一種依賴於'to_f'的不同方法,或者因爲它是'to_f'的別名? – hjkml 2014-11-05 00:31:24@hjkml Float方法按照以下順序檢查參數的類型:Fixnum - > Float - > Bignum - > Nil(errors) - >嘗試調用'to_f'。 – August 2014-11-05 01:00:02
謝謝。那麼回到我原來的問題的核心,每個Ruby類都有自己的'to_f'方法嗎?在不同類別的方法版本之間共享代碼的程度如何? – hjkml 2014-11-05 02:39:57