2011-11-08 2 views
1

메소드 이름 인 문자열의 배열을 반복하고, Object#send 메소드를 사용하여 새로운 인스턴스 객체에 값을 저장하는 루비 함수를 작성하려고합니다.)는 이미 존재하는 것의 변형이다. 그게 내가 설명 할 수있는 최선이야. 두 번째 ocassion에하나의 객체에서 다른 객체로 많은 값 할당하기

@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의 : 여기에 생각입니다.

+0

1) 'ARRAY_OF_METHODS'은 무엇입니까? 2)'related_class'는'RelatedClass'와 같은가요? 3)이 병렬 반복은 어떤가? –

+0

@AndrewGrimm 1) _ "메서드 이름 인 문자열 배열"_. 2) 아마도 더 나은 해결책을 찾기위한 좋은 질문이지만, 'NoMethodError'와는 관련이 없습니다. 3) 그렇지 않습니다. 일치시킬 제목을 편집했습니다. :) – Phrogz

+0

그래, 나는 그것을 심하게 망쳤다. 고마워요. 프로그, 당신은 완벽하게 이해했습니다. – tquarton

답변

3

는 또한 값을 얻기 위해 send해야합니다

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

내가 항상 사용하고 옹호 문자열 보간 String#+을 통해, 당신은 related_class를 얻을 수있는 self. 필요하지 않습니다.

+0

아, 내 blabber의 해결책과 해석에 대해 Phrogz 너무 감사드립니다! 완벽하게 일했습니다! – tquarton

관련 문제