>> 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