2012-05-10 2 views
1

이 메서드가 실행되지 않는 이유는 확실하지 않습니다.해시가 있고 실행중인 proc 인수가없는 메서드

sequence5.rb:1:in `sequence5': wrong number of arguments (2 for 1) (ArgumentError) from sequence5.rb:11:in `<main>' 

을하지만 당신은 명확하게 볼 수있는, sequence5 방법은 2 개 인자, args 해시에 대한 하나 b 시저의 다른를 취해야한다 :

컴파일 오류가 읽습니다.

내가 실행하려고하는 코드는 여기에 있습니다.

def sequence5(args, &b) 
    n, m, c = args[:n], args[:m], args[:c] 
    i = 0 
    while i < n 
    b.call(i*m+c) 
    i += 1 
    end 
end 

p = Proc.new {|x| puts x} 
sequence5({:n=>3, :m=>4, :c=>0}, p) 

답변

3
sequence5({:n=>3, :m=>4, :c=>0}, &p) 

p는,이 블록 인수의되지 않고 루비

+0

감사합니다 블록을 전달하는 구문이 다른! 이것은 문제를 해결했습니다. –