我正在尝试编写一个ruby函数,它遍历一个方法名称的字符串数组,并使用Object#send
方法将值保存在新的实例对象中(甚至不确定这是否合法)是一个改造现有的。这是我能解释的最好的。这是个主意:
@example = RelatedClass.new
def example_method
instance_dependant_float = related_class.myvalue / other_related_class.myvalue
ARRAY_OF_METHODS.each do |t|
@example.send(t+'=', self.related_class.t * instance_dependant_float)
end
end
当我尝试运行这样的东西时,我在两个单独的ocassions上调用索引“t”(在我的发送和乘法器中),NoMethodError在第二个ocassion上。
答案 0 :(得分:3)
您还需要send
来获取值:
ARRAY_OF_METHODS.each do |name|
@example.send( :"#{name}=", related_class.send(name) * some_float )
end
我总是在String#+
上使用和提倡字符串插值,而您不需要self.
来获取related_class
。