ruby - 是否可以更改 Ruby 对象的类?

标签 ruby class object

是否可以在实例化后更改 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/

相关文章:

ruby-on-rails - 使用 rake 任务将空间 CSV 数据导入 Postgres/PostGIS 数据库

C++ 在另一个类中实例化一组具有相同构造函数的类中的类类型变量

python - Plone - 从 View 中的成员文件夹获取并列出对象

javascript - Function.prototype.__proto__ 是什么意思?

javascript - 在 React Native 中将新的键/值添加到对象中

javascript - 之前的web form录入数据后,如何让web form出现?

ruby-on-rails - 我想在内容之间插入图像

php - 从另一个类访问数据库类

javascript - 如何将 CSS 类的索引与 JavaScript 匹配?

ruby-on-rails - 将数据从 `datetime_select`转换为DateTime对象的Rails方法在哪里?