我试图找到一种方法来计算由函数和参数组成的表达式。问题是,我不想把参数转换成字符串。
具体来说,我有字符串类型的函数x="display_datetime“,它接受类型为Time的对象y。函数名是动态创建的,所以我不能只输入display_datetime(y)。
我试过的是:
最后两种方法并不理想。我觉得必须有一些更好的方法来做到这一点,按照前3种方法。
如有任何反馈,将不胜感激。
谢谢
发布于 2013-07-19 07:41:59
send没有问题。这样做:
send(x, y)发布于 2013-07-19 10:05:38
给定的
s = "display_datetime" # function name, dynamic
y = Time.now # or some other Time object有些对象o响应display_datetime()方法,您可以通过几种方式动态调用o.display_datetime,至少:
o.send(s.intern, y) # => o.send(:display_datetime, y)或,
eval("o.#{s}(y)") # => eval("o.display_datetime(y)")或者,
o.instance_eval("#{s}(y)") # => o.instance_eval("display_datetime(y)")或者如果您想要evalception,如果变量n包含变量o的名称
n = 'o'
eval %Q(#{n}.send(:instance_eval, "\#{s}(y)"))https://stackoverflow.com/questions/17740595
复制相似问题