2012-03-10 2 views
4

元の質問に対する再分類。私はルビーで実行されるループが必要で、私はコンソールに(おそらく取得を使用して)停止し、ループが停止するcommmandに入ることができます。Rubyループが発行されるまで

乾杯 マーティン

+0

をこの質問を見つける。 – Jwosty

+0

質問にはより多くのタグは含まれていません。純粋なRuby以上のものは何もありません。 'loop'のようなタグは避けるべきです。 –

+0

Mm、良い点。それらは私の頭の中に入ったばかりの最初のものでした。私は本当に実際のタグを提供していませんでした。 – Jwosty

答えて

7

私はあなたがこのようなものを使用できると思います。他の人がこの同じ問題を抱えている場合は、彼らができるようにするには、さらにいくつかのタグ(例えばuntilまたはloop)を追加する必要があります

# Initialize the input queue. This is where the user-created info will be stored 
$QUEUE = [] 
def pending 
    old = $QUEUE 
    $QUEUE = [] 
    old 
end 

t = Thread.new do 
    loop do 
    # Ask the user for something 
    print "Enter info here: " 
    # Read information in 
    $QUEUE << gets.chomp 
    end 
end 

# Example code utilizing this; you can do whatever you like with the queue 
2.times do 
    sleep 5 
    # Print the list out 
    puts "\nYou entered: \n" << pending.join("\n") 
end 
+0

'Thread.main.exit'の代わりに' exit'を使うこともできます。 –

+0

これは、起動されたスレッドからただ終了します。 – Jwosty

+3

['Kernel#exit'](http://apidock.com/ruby/Kernel/exit)と[' Thread.exit']を混同していると思います(http://apidock.com/ruby/Thread/exit/クラス)ここに。 'exit'は完全なスクリプトを終了させますが、これは適切と思われます。変数を設定せず、メインループの中で 't.stop? 'をチェックするだけで、第3の例のロジックを追加することができます。 –

関連する問題