ruby 中 clone 和 dup 都是对一个对象的浅拷贝,其区别如下:
1.clone 会拷贝单例方法,而 dup 不会。
a = Object.new
def a.hello
"hello"
end
a.dup.hello # raises NoMethodError
a.clone.hello # return "hello"
2.dup 不能对 frozen 状态的对象进行拷贝,而 clone 可以。
#8 楼 @realwol #9 楼 @xieyu33333 确实,大家互相交流,如果有好的参考书,不妨分享一下。 看了 LZ 最近关于元编程的一些学习总结,其实还都不错。
#9 楼 @xieyu33333 我没有任何”冷嘲热讽“的意思。我只是不觉得应该鼓励这样照搬入门教材的帖子。任何一本书上都会提到这个知识点。而且,对于这点,任何书上的解释都是一样没有任何争议的。我只是觉得帖子应该稍微有可讨论或者延伸性质。如果不是,任何参考书上的任何东西都可以拆一段发帖子,也可以解释为有的人没看过这段。重申一遍,我没有任何你所谓的冷嘲热讽,单纯表达我的观点而已。
#11 楼 @realwol 有没有意义你说了不算,事实是你搜索“ruby clone dup”可以发现 stackoverflow 上有这个问题,顶这个问题和下面答案的人还很多,相关的文章也不少,Ruby China 上以前也有过讨论:http://ruby-china.org/topics/1712, http://ruby-china.org/topics/2055。