>> a = 5
=> 5
>> b = "hello, world!"
=> "hello, world!"
>> b.dup
=> "hello, world!"
>> a.dup
TypeError: can't dup Fixnum
from (irb):4:in `dup'
from (irb):4
我知道Ruby會在每次給一個新變量賦一個整數時做一個拷貝,但爲什麼Numeric#dup
會產生一個錯誤?爲什麼數字不支持.dup?
這不會破壞抽象,因爲所有對象都應該預期正確響應.dup
?
重寫dup
方法解決這個問題,據我可以告訴:
>> class Numeric
>> def dup()
>> self
>> end
>> end
這是否有不利的一面,我沒有看到?爲什麼不將它內置到Ruby中?
ActiveSupport,不是Rails,提供了'可複製?'方法。所以你可以安裝ActiveSupport並且需要它('require'active_support''),如果你需要這個(和其他許多)實用程序方法。 – henrikhodne 2009-12-28 18:11:25
確實。更新。 – 2009-12-28 21:37:20
鏈接應該被https://bugs.ruby-lang.org/issues/1844取代。此外,該功能被拒絕,因爲顯然沒有取得進展。 – 2014-08-20 05:44:10