【发布时间】:2010-12-30 03:58:57
【问题描述】:
>> 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 方法将解决问题:
>> class Numeric
>> def dup()
>> self
>> end
>> end
这有我没有看到的缺点吗?为什么这不是 Ruby 内置的?
【问题讨论】:
标签: ruby numbers abstraction