gpt4 book ai didi

ruby - 哪些 Ruby 类支持 .clone?

转载 作者:数据小太阳 更新时间:2023-10-29 06:52:55 24 4
gpt4 key购买 nike

Ruby 在 Object 中定义了 #clone。令我惊讶的是,有些类在调用它时会引发异常。我发现 NilClassTrueClassFalseClassFixnum 有这种行为。

1) 是否存在不允许 #clone 的完整类列表(至少是核心类)?或者有没有办法检测特定类是否支持 #clone

2) 42.clone 有什么问题?

最佳答案

我认为没有正式的列表,至少除非你算上阅读源代码。原因 2) 不起作用是因为对 Fixnums 应用了优化。它们在内部存储/传递为它们的实际值(true、false 和 nil 也是如此),而不是作为指针。天真的解决方案是让 42.clone 返回相同的 42,然后返回不变的 obj.clone.object_id != obj.object_id将不再成立,42.clone 实际上不会被克隆。

关于ruby - 哪些 Ruby 类支持 .clone?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1418574/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com