2012-09-07 3 views
3

나는이 이상한 점을 알고 싶습니다. 나는 ruby ​​* args 구문 오류

def test(*args) 
    puts args 
end 
def test=(*args) 
    puts args 
end 

들이 모두 일이나 내가 모듈에서 위의 코드를 넣어 (클래스 작업, 말) 다른 클래스에서 해당 모듈을 포함 할 경우

다음 놀리려는 이러한 두 가지 방법을 ... 정의하는 경우
j=Job.last 
j.test=(1,2,3) 

다음과 같은 오류 ... 예상대로

SyntaxError: (irb):3: syntax error, unexpected ',', expecting ')' 
j.test=(1,2,3) 
     ^

다음 작업을 ... 발생

j.test=[1,2,3] 
j.test=(1) 

모듈 안에있는 것처럼 보입니다. '='로 정의 된 메소드는 항상 하나의 arg를 기대합니다. 그건 나에게 의미가 없다.

무엇이 없습니까?

답변

2

Ruby 인터프리터의 구문 분석.

j.send :test=, 1, 2, 3 
+0

상기 수율 "정의되지 않은 방식 '시험을 시도 ='번호 <직업 : 0x007fdd3c844498> " – Paul

+0

j.methods.include? (: test =)를 사용해보십시오. –

2

사용 직접

j.test = 1,2,3 

또는

j.test= ([1,2,3]) 

또는`

j.send('test=',[1,2,3]) 
+0

글쎄, 나는 '그것으로'일하는 법을 보았다. 그러나 '테스트 ='명령은 pry 커맨드 라인에서 작동하지만 모듈에서는 그렇지 않다. 루비에서 오류가 발생 했나요? 아니면 내 부분에 근본적인 오해가 있습니까? – Paul

+0

내가 말했지 : Ruby 인터프리터를 파싱했다. Ruby 버그 신고 사이트 http://bugs.ruby-lang.org/에 불만 사항 –