2010-02-09 2 views
3

존재 여전히 다소 새로운, 나는이 작업을 수행하는 방법을 잘 모르겠어요 ...의 내가 가변 인자를 취하는 방법이 있다고 가정 해 봅시다 :메서드의 인수를 동적으로 만드는 방법은 무엇입니까? 루비에

데프 MYTEST (* 인수를) 는 args.to_json을두고 MYTEST

('하나', '둘', '셋')

없음 문제 : 끝

분명 내가 같은, 내가 원하는대로를 호출 할 수 있습니다. 하지만 내가해야 할 일은 동적으로 생성 된 인수 집합을 호출하는 것입니다. 예를 들어 데이터베이스에서 결과 집합을 가져 오는 중이며 몇 개의 항목이 다시 나타날지 알 수 없습니다. 결과 아이디를 수집하고 mytest()를 호출하여 mytest()에 전달할 인수 세트를 어떻게 구성할까요?

이것은 다소 명백한 것처럼 보이지만 어떤 이유로 든 그렇지 않습니다. 대신 mytest()를 사용하여 배열이나 해시를 작성할 수 있지만 실제로 작성하지 않은 플러그인에서 메소드를 호출하려고합니다.

답변

13

귀하의 질문에 대한 확신이 없습니다. 배열을 메소드의 인수로 바꾸는 방법을 묻고 있습니까? 이

이의 당신이 있다고 가정 해 봅시다 읽기 :

a = [1,2,3,4] 

및 추천 매개 변수, 복용 방법 :이 같은 방법을 호출 할 수 있습니다

def whatever(p1,p2,p3,p4) 
    # do whatever you want with them here 
end 

을 :

whatever(*a) 

및 배열의 ​​요소가 원하는 방식으로 전송됩니다.

+0

나는 그것이 그가 원하는 것이라고 생각한다. – Trevoke

+0

네, 그게 다예요, 고마워요! C를 포함하는 배경에서 오는 우리들을 위해, 그것은 이상하고 현명한, 둘 다 실제로 보인다. 유일한 해결책은 String을 적절하게 구현 한 후에 eval()을 사용하는 것이 었습니다. 그러나 그것은 분명히 여러 가지 이유로 좋지 않습니다. – Masonoise

관련 문제