質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

1回答

244閲覧

(RUBY)とある繰り返し処理を行うロジックを組み立てられない

widget11

総合スコア221

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2018/09/25 09:38

n = 0 n.upto(n + 9) do |a| api("url.. #{a}") end sleep(60)

apiというAPIのリクエストとレスポンスを行うメソッドの処理は別途定義しております。
とあるapiのリクエスト制限が1分間に10回の為、60秒置きに、nからn+9の回数(999回まで)APIを叩くメソッドを作りたいのですがロジックが思いつきません。
リクエストするエンドポイントのクエリが数字であるため、そのままブロック変数を式展開して行えると思うのですが、、、例を書きますと

0.upto(9) do |a| api("url.. #{a}") end sleep(60) 10.upto(19) do |a| api("url.. #{a}") end sleep(60) ・ ・ 990.upto(999) do |a| api("url.. #{a}") end sleep(60)

という繰り返し処理を行ってくれるロジックを書きたいのですが、どのように記述すればよいでしょうか?
宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ちゃんと書けてるじゃないかと思ったのですが、もしかして、こういうことが聞きたかった?

Ruby

10.step(999, 10) do |n| 2 n.upto(n + 9) do |a| 3 api("url.. #{a}") 4 end 5 sleep(60) 6end 7または、 80.upto(999) do |a| 9 api("url.. #{a}") 10 sleep 60 if a % 10 == 9 11end

投稿2018/09/25 09:44

otn

総合スコア84538

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

widget11

2018/09/25 09:54

ご回答ありがとうございます! 上のstepメソッドが初見だったのですが、下のメソッドを見るに余りが9の数の時にsleepメソッドを実行するという風に書けば良いということなんですね。。。 地頭悪いのも相乗してこういうロジックを組み立てることが非常に苦手なのですがどうトレーニングすればよいでしょうか?
otn

2018/09/25 12:51

> トレーニングすればよいでしょうか? いろいろなパターンを学べば、 ・自分で考える力が伸びる ・自分で考える力は伸びないが、定石をたくさん覚えることで、いろいろな場面で使える引き出しが増える の少なくともどちらかにはなれると思います。 考える力と記憶力の両方が弱ければ、どうしようも無いですが。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問