Присвоение множества значений от одного объекта другому - PullRequest
1 голос
/ 09 ноября 2011

Я пытаюсь написать функцию 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

Когда я пытаюсь запустить что-то вроде этого, где я называю индекс «t» для двух отдельных случаев (в моем посылке и в множителе), это значит, что NoMethodError во втором случае.

1 Ответ

3 голосов
/ 09 ноября 2011

Вам нужно send, чтобы получить значение также:

ARRAY_OF_METHODS.each do |name|
   @example.send( :"#{name}=", related_class.send(name) * some_float )
end

Я всегда использую и поддерживаю интерполяцию строк вместо String#+, и вам не нужно self., чтобы получить related_class.

...