次の方法でループを実装する上品な方法があるかどうかを知りたいと思います。私は、次の擬似コードとして定期的なwhileループ(Javaプログラマー)を考え出すことができます:Rubyでループを実装する最もスマートで最も効率的な方法
while x<10
search = Google::Search::Web.new()
search.query = "china"
search.start = x
end
誰かがより良い方法を知っていますか?
次の方法でループを実装する上品な方法があるかどうかを知りたいと思います。私は、次の擬似コードとして定期的なwhileループ(Javaプログラマー)を考え出すことができます:Rubyでループを実装する最もスマートで最も効率的な方法
while x<10
search = Google::Search::Web.new()
search.query = "china"
search.start = x
end
誰かがより良い方法を知っていますか?
このようなことをしていますか?
9
に開始するすべての方法まで、
2
で開始し、その後、
1
でスタートしてクエリを実行します
(1..9).each do |i|
search = Google::Search::Web.new()
search.query = "china"
search.start = i
end
。 1..9
の構文は範囲です(両端を含む)。
UPDATE:(1..9).each
はおそらくルビーでこれを行うには、最も慣用的な方法ですが、ジョナスElfströmはすぐにいくつかの選択肢を示して涼しいリンク投稿:
http://alicebobandmallory.com/articles/2010/06/21/a-simple-loop
多くの選択肢:
# Will go 0..9
10.times do |i|
search = Google::Search::Web.new()
search.query = "china"
search.start = i
end
# Will go 1..10
1.upto(10) do |i|
search = Google::Search::Web.new()
search.query = "china"
search.start = i
end
# Will go 1..10
(1..10).each do |i|
search = Google::Search::Web.new()
search.query = "china"
search.start = i
end
を
さらに多くの選択肢http://alicebobandmallory.com/articles/2010/06/21/a-simple-loop –
10.times do |i|
search = Google::Search::Web.new()
search.query = "china"
search.start = x
loop
整数には、ブロックとループをn回掛けて実行するtimes
メソッドがありますre nは数値です。
x
の値が実際には変更されないように見えるので、これを書き換えるには2通りの方法があります。ループが始まる前にx >= 10
のいずれかが実行されることはなく、単に何も置き換えられません。
loop do
search = Google::Search::Web.new
search.query = 'china'
search.start = x
end if x < 10
:そうでなければ、あなたが事前にx
の値がわからない場合、あなたは、単にループを条件付きにすることができ、それは無限ループだし、それを書くための最も慣用的な方法は、
loop do
search = Google::Search::Web.new
search.query = 'china'
search.start = x
end
ですx
がメソッドの戻り値を変更するメッセージを送信する場合は、余分な中カッコを削除する以外にコードを改善するための明白な方法はありません。
このpsedocodeには問題があります。どこでも 'x'を変更することはありません。したがって、ループ開始時にx <10であれば、ループは無限に実行されます。ループ開始時にx> = 10であれば、それはまったく実行されません。 –
Google ::検索:: Webには開始属性がないようです。 https://github.com/visionmedia/google-search/blob/master/lib/google-search/search/base.rb –
ライブラリをカスタマイズしました。私はXの値を変更するステートメントを追加する必要があります。ありがとうございました! – mabounassif