【发布时间】:2014-11-08 16:29:47
【问题描述】:
我需要一种方法从 stuff 方法(通过元编程)发送消息,该方法在对象范围内执行 my_method。有没有在 Dummy 类上插入更多代码的好方法?
class Dummy
stuff :final_value do
value :my_method
end
def my_method
10.5
end
def final_value
0
end
end
预期回报:
dummy = Dummy.new
dummy.final_value
=> 10.5
想法是采用 value args 上的方法,并找到一种方法从对象范围映射这些值,即本示例为 10.5。
在那里发布一个临时解决方案。
【问题讨论】:
-
这看起来有点困难——这肯定是可能的,可能很容易,但乍一看似乎你在你的对象上调用了一个实例方法,但你想使用一个完全不同的方法在类实例上。要改变self的含义,请查看.clas_eval、.instance_eval和instance_eval(&block) if block_given?
-
您正在调用一个不存在的方法,即 stuff()。因此,您需要在提出问题之前解决该问题。
-
我可以想出很多方法来获得想要的结果,但我不知道你想要哪一种,因为你的问题太模糊了。
-
如果您不尽快进行编辑澄清,您的问题将被关闭。我认为你需要做的就是说你想添加一个方法
stuff,它会产生你预期的输出,但你不知道如何编写那个方法。
标签: ruby metaprogramming