【发布时间】:2010-11-27 23:05:35
【问题描述】:
Ruby 在 Object 中定义了#clone。
令我惊讶的是,某些类在调用它时会引发异常。
我发现 NilClass、TrueClass、FalseClass、Fixnum 有这种行为。
1) 是否存在不允许 #clone 的类的完整列表(至少是核心类)?
或者有没有办法检测特定类是否支持#clone?
2) 42.clone 有什么问题?
【问题讨论】:
-
我真的很想知道你如何测试一个类是否可以自己克隆。似乎如果一个类不想让自己被克隆,那么它应该将它从 Object 继承的克隆方法设为私有,这样你就可以只在 public_methods 下测试它的存在。对我来说似乎是常识。