ruby - 如何通过动态接收类名来实例化类
问题描述
我需要创建一个类,但条件是,我将在字符串中收到类名,如下所示
["IndividualContact", "Legal"].each do |var|
ind = var.new
end
现在我的期望是,我需要打电话
IndividualContact.new
但Legal.new
由于 var 是一个字符串变量,它调用.new
一个字符串,如下所示
"IndividualContact".new
而不是打电话
IndividualContact.new
有什么办法可以按我的预期打电话吗?
解决方案
使用Module#const_get
(假设这些类已经在全局命名空间中定义):
%w|IndividualContact Legal|.map do |klazz|
Kernel.const_get(klazz).new
end
上面的代码将返回一个包含两个实例的数组:一个实例 ofIndividualContact
和一个Legal
.
推荐阅读
- vba - 在页脚或页眉中添加 2 个表格
- php - 如何在 PHP 中发送带有身份验证标头的 SOAP 请求
- python - 任何人都可以帮助我划分此 column1 和 column2 值。价值以百万计
- azure - 如何获取天蓝色资源的resouceID
- filehelpers - 使用 FileHelpers 的 CSV 文件中的最后一个分隔符
- c# - 更改数据类型时出现转换错误
- python-3.x - ttk.Spinbox 总是突出价值
- python - 音乐类型识别
- javascript - 如何检测我来自 Javascript 的页面
- machine-learning - 为什么单个决策树算法无法准确运行集成技术