2012-02-09 2 views
1

사용자가 'x'+ Enter를 치면 루프를 끝내는 방법을 찾고 있습니다. 사용자가 취소 할 때까지 루프가 백그라운드에서 계속 실행되기를 원합니다. 이 라인을 따라입력에서 루프 종료하기

뭔가 :

while gets.chomp != 'x' 

    puts 'looping...' 

    sleep 1 

end 

나는 프로그래밍 초보자 해요와 두루 도움이 깊게 감상 할 수 있도록이 작업을 수행하는 방법에 대한 수색.

+0

내 요지를 참조하십시오 : https://gist.github.com/1759451. –

답변

5

당신은 이것에 대한 스레드를 사용해야합니다 :

Thread.new do 
    while line = STDIN.gets 
    break if line.chomp == 'x' 
    end 
    exit 
end 

# whatever you want to do in the background 
# (or rather in the foreground, actually) 
loop do 
    puts "foo" 
    sleep 1 
end 

문제가 STDIN.gets 블록, 당신은 백그라운드 스레드를 사용하여 프로그램을 병렬화없이 같은 시간에 다른 일을 할 수 없도록 만 확인 입력 용.

+0

Merci beaucoup! 나는 그것을 지금 가지고있다라고 생각한다! – catbat

+0

@niklasb 안녕하세요! 나는이 문제에 대한 해결책을 찾고 있었고, 지금까지 매우 비슷한 제안만을 찾을 수 있었지만, 당신을 포함한 어떤 것도 나에게 적합하지 않았다. 루비에서 변화가 있습니까? 감사. #ruby 새내기 –