2014-11-04 61 views
2

鋒紅寶石的第一章,拉斯·奧爾森寫道:Ruby中是否有類獨立的方法?

Float方法變爲它的參數,通常是一個字符串成浮點數。

紅寶石新手我的印象是Ruby方法通過定義屬於類,使得例如FixnumArray各自具有它們自己單獨的:is_a?(大概包括的共享碼更大或更小的量),但「通常是一個字符串」意味着Float是可以在不同類的對象上調用的單一方法。有人可以澄清一下情況嗎?

回答

0

Float是一個類和method in Kernel。默認情況下,所有Ruby對象都包含Kernel模塊,這意味着您可以從任意位置調用Float方法

class Foo 
    def to_f 
    42.0 
    end 
end 
Float Foo.new # => 42.0 
+0

謝謝您的回答:

Float方法將是無論是FloatFixnumString,或任何其他具有to_f方法對象(此方法必須返回一個Float)參數工作! 「或任何其他具有to_f方法的對象」 - 因爲Float是一種依賴於'to_f'的不同方法,或者因爲它是'to_f'的別名? – hjkml 2014-11-05 00:31:24

+0

@hjkml Float方法按照以下順序檢查參數的類型:Fixnum - > Float - > Bignum - > Nil(errors) - >嘗試調用'to_f'。 – August 2014-11-05 01:00:02

+0

謝謝。那麼回到我原來的問題的核心,每個Ruby類都有自己的'to_f'方法嗎?在不同類別的方法版本之間共享代碼的程度如何? – hjkml 2014-11-05 02:39:57

相關問題