두 가지 인수를 어떻게 한 가지 변호 서명이있는 메소드로 전달할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/1435400

  •  07-07-2019
  •  | 
  •  

문제

s = Proc.new {|x|x*2}

def one_arg(x)
  puts yield(x)
end

one_arg(5, &s)

어떻게 one_arg 알고 있습니다 &s?

도움이 되었습니까?

해결책

그만큼 & 연산자는 Proc를 블록으로 바꾸므로 블록이있는 1 개의 반대 방법이됩니다 (호출됩니다. yield). 당신이 중단했다면 & Proc를 직접 통과 시켰으므로 오류가 발생했을 것입니다.

다른 팁

그렇게함으로써 &s, 당신은 말하고 있습니다 one_arg 당신은 당신의 Proc를 원합니다 s 블록으로 통과했습니다 (내가 틀렸다면 수정 해주세요). 동등한 글쓰기가 될 것입니다

one_arg(5) do |x|
  x *2
end

여기에 몇 가지 질문이 있었기 때문에 늦게이 문제와 관련하여 몇 가지 질문이있었습니다. 8 월 릴레아 꽤 멋져요 쓰기 이 모든 루비 광기의 복잡성에 대해.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top