2012-02-09 18 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こんにちは!私はこの問題の解決策を探していましたが、これまでのところ非常に似通った提案しか見つけられませんでしたが、あなたのものを含め誰も私のために働きません。ルビーに何か変わった?ありがとう。 #rubyNewbie –

関連する問題