【发布时间】:2011-09-28 19:54:52
【问题描述】:
我正在用 Ruby 编写内部 DSL。为此,我需要以编程方式创建命名类和嵌套类。最好的方法是什么?我认为有两种方法可以做到这一点:
- 使用
Class.new创建一个匿名类,然后使用define_method为其添加方法,最后调用const_set将它们作为命名常量添加到某个命名空间。 - 使用某种
eval
我已经测试了第一种方法并且它有效,但是对于 Ruby 来说是新手,我不确定将类作为常量是正确的方法。
还有其他更好的方法吗?如果不是,以上哪个更可取?
【问题讨论】:
标签: ruby metaprogramming dsl metaclass