【发布时间】:2012-12-09 02:12:47
【问题描述】:
我已经动态创建了一个类,并且正在尝试向该类添加方法。假设一个字符串表示该方法需要评估的命令。
a = "puts x"
myobject.metaclass.send(:define_method, k){|x|
// cannot do this, obviously
eval(a)
}
感谢您的帮助。
编辑:
k 也来自文件,只用 ruby 编写类而不是将替代文件格式作为类读取是微不足道的,但我想让创建模板尽可能简单。看起来像......
generic
do_something:
environment1:
foo arg1 arg2
environment2:
bar arg
baz arg
我知道调用了什么方法以及该方法需要做什么。我在运行时为每个类实例确定了适当的环境,我似乎无法动态地将语句添加到方法中。
【问题讨论】:
-
你不能只评估一个方法字符串吗?
标签: ruby metaprogramming