2010-07-11 5 views
0

멀티 스레딩 문제로 머리를 감싸려고 노력 중이므로 Ruby에서 Fiber을 사용 중입니다. 그러나 스크립트를 실행하려고하면 내 세 번째 구문 다음에 예기치 않은 개행 문자가 있음을 알 수 있습니다. 내가 구문에 대해 뭔가를 놓쳤는가, 여기?Ruby 파이버에서 예기치 않은 ' n'이 발생했습니다.

timer = Fiber.new do |power| 
    power = power.nil? ? 'on' | power 
    start = Time.now 
    loop do 
    if power == 'off' 
     now = Time.now 
     puts now - start 
    end 
    power = Fiber.yield 
    end 
end 

답변

1

전력 = power.nil? ? '에'| power

올바른 구문은 power = power.nil? ? 'on' : power이며 파이프 대신 콜론이 사용됩니다.

그러나이 글은 단지 power = 'on' if power.nil?으로 작성 될 수 있습니다. 이는 조금 짧아서 대부분의 사람들에게 더 읽기 쉽습니다.

또한 (!) 참고로 : 당신이 'on''off' 대신 truefalse을 사용하고 paticular 이유가?

+0

고마워, 그게 바로 해결. 이렇게 줄을 다시 쓸 수 있을까요? 파이버에서 첫 번째 호출이 블록 변수의 첫 번째 할당에 인수를 제공하기 때문에 파이버에서이 방법이 작동하지 않는다고 생각했습니다. – Andy

관련 문제