【发布时间】:2014-06-05 01:36:19
【问题描述】:
我对 Ruby 比较陌生,但精通许多其他语言。作为我学习 Ruby 的一部分,我引用了由以下人员创建的对象:some_instance.clone。原始对象实例可以找到某个方法OK,但是克隆的对象实例不能。这怎么可能发生?如果副本如此不同以至于无法调用底层基类的方法,那么理解clone 的正确方法是什么?
代码:
board1 = Board.new(true)
board1.checkBoardLayout
board2 = Board.clone
log.debug("board1 #{board1.object_id}, board2 #{board2.object_id}")
board2.checkBoardLayout
checkBoardLayout 的第一次调用成功;第二个失败了
我的理解有哪些不足; clone 的行为与原来的相似,这不是一个有效的期望吗?如果是这样,发生了什么:为什么它不起作用?如果不是,那么在什么意义上它可以是任何一种克隆? dup 也好不到哪里去。我的 Ruby 损坏了吗?
【问题讨论】: