是否可以在实例化后更改 Ruby 对象的类,例如:
class A
end
class B
end
a = A.new
a.class = B
或类似的。
(上面的代码不会运行,因为类是一个只读变量)
我知道这是不可取的,有点奇怪,而且不是我打算做的事情,但这可能吗?
最佳答案
不,这在 ruby 中是不可能的。
理论上可以在 C 扩展中通过更改给定对象的 klass
指针来实现,但应该注意的是,这将完全是特定于实现的,不适用于直接类型 (即你绝对不能改变类,例如一个 fixnum),并且可能以各种方式爆炸。
关于ruby - 是否可以更改 Ruby 对象的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7528552/