gpt4 book ai didi

ruby - 我如何知道一个对象是否可以被复制?

转载 作者:数据小太阳 更新时间:2023-10-29 07:35:54 25 4
gpt4 key购买 nike

我正在实现一个类的 to_a 方法,我希望所有可以被复制的对象(比如 String)是重复,同时保留其他类型(如 SymbolInteger)。一开始我觉得这很简单:

if object.respond_to? :dup
object.dup
else
object
end

事实证明,所有对象都响应 :dup,但整数和符号会引发类型错误。我可以这样做:

begin
object.dup
rescue TypeError
object
end

但我想避免将异常用于控制流。


有什么方法可以在不依赖异常的情况下检查对象是否可以复制?

我正在使用 Ruby 2.0.0

最佳答案

无法给你一个很好的答复,但这是一个例子,我会尝试让 ruby​​ 核心团队添加功能(除非其他人找到一个简单的方法来查明一个对象是否可以被复制或不是)。

考虑到除 BasicObject 之外的所有对象都继承自类 Object,这应该不是一个很大的添加。

所以也许这是 .duplicable 的情况?可以直接添加到核心。

bugs.ruby-lang.org/projects/ruby-trunk

关于ruby - 我如何知道一个对象是否可以被复制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27210990/

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