作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我有一些 rb 文件,都具有相同的结构:
class RandomName < FooBar
end
randomname 是一个随机的类名,它在每个 rb 文件中都会发生变化,但都继承自 Foobar。
我如何从那里的 rb 文件加载所有 randomclass?
最佳答案
我认为解决方案分为两部分:
如何动态实例化一个类
一个。使用String#constantize
from ActiveSupport
klass = "SomeNamespace::SomeClassName".constantize
klass.new
使用 Module#const_get
(不处理命名空间)
klass = const_get(:SomeClassName)
klass.new
如何检测类名
在 ruby 中广泛遵循的约定是根据文件包含的类命名文件,因此 random_name.rb
将包含 RandomName
类。如果您遵循此约定,那么您可以执行以下操作:
Dir["/path/to/directory/*.rb"].each do |file|
require file
file_name = File.basename(file.path, '.rb')
# using ActiveSupport for camelcase and constantize
file_name.camelcase.constantize.new
end
我认为您应该解释一下您要完成的任务。您采用的方法似乎非常规,并且可能有一种更有效的方法来实现您的目标,而无需执行所有这些文件加载和具有随机名称的类的动态实例化。
请记住,仅仅因为 ruby 允许您做某事,并不意味着实际去做是个好主意!
关于ruby - 如何在模块中加载未知类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5441510/
我正在开发一个需要能够平均三个数字的 Facebook 应用程序。但是,它总是返回 0 作为答案。这是我的代码: $y = 100; $n = 250; $m = 300; $number = ($y
我只是无法弄清楚这一点,也找不到任何对我来说有意义的类似问题。我的问题:我从数据库中提取记录,并在我的网页上以每个面板 12 条的倍数显示它们。因此,我需要知道有多少个面板可以使用 JavaScrip
我是一名优秀的程序员,十分优秀!