s = Proc.new {|x|x*2}
def one_arg(x)
puts yield(x)
end
one_arg(5, &s)
one_arg
은 (는) &s
을 어떻게 알 수 있습니까?하나의 인수로 서명 된 메서드로 두 개의 인수를 전달할 수 있습니까?
s = Proc.new {|x|x*2}
def one_arg(x)
puts yield(x)
end
one_arg(5, &s)
one_arg
은 (는) &s
을 어떻게 알 수 있습니까?하나의 인수로 서명 된 메서드로 두 개의 인수를 전달할 수 있습니까?
연산자 &
연산자는 Proc를 블록으로 변환하므로 블록이있는 인수가 하나 인 메서드 (yield
이라고 함)가됩니다. &
에서 벗어나 Proc를 직접 통과하면 오류가 발생했을 것입니다.
&s
을 수행하면 one_arg
에 Proc s
이 블록으로 전달되기를 바라고 있습니다 (잘못된 경우 제발 수정하십시오). 동등한 작문은
one_arg(5) do |x|
x *2
end
일 것입니다. 여기에 관해서는 약간의 질문이 있습니다. August Lilleaas은 Ruby의 모든 광기의 복잡함에 대해 꽤 좋은 write up을 가지고 있습니다.