ハリケーンirmaの準備で、私はexerciseism.ioから一連のエクササイズをダウンロードするためのクイックゴミスクリプトを作成しました。それは動作しますが、私は理解していないthreads.each
への呼び出しでエラーがあります、私は正しく理解する場合、threads.eachが同期しているまでのすべてのコードは、どのような最善の方法を修正するか分からない。:マルチスレッドプログラムのRuby実行順序
rb:14:in '<main>': undefined method 'each' for nil:NilClass (NoMethodError)
私はエラーを取得するが、期待通りにプログラムがまだ実行されますので、私は、私はこれを適切に書いていないよ確信しているので、それは私には興味深いです。
language = ARGV[0]
exercises = `exercism list #{@language}`.split("\n")
threads = exercises.map do |exercise|
break if exercise == ''
Thread.new do
system("exercism fetch #{language} #{exercise}")
end
end
threads.each(&:join)
は、それだけの指示ですその後。 – NoobException
@NoobException 'break'は' threads'への代入を防ぐので、 'next'で置き換えるか、代入を取り除き、代わりにループ内のスレッドに追加する必要があります。 – fgb
しかし、ループ内での追加についてのあなたのコメントは理にかなっています。答えがあれば、それを正しいものとしてマークします。 – NoobException