こんにちは
Rubyで繰り返し文を書きたいのですが
loopやWhileでなく
for(a =0;; a++)のように変数を増やしながらbreak条件を満たすまでループしたいのですが
loop{ a += 1 }
とするのが現実的なんでしょうか?
よろしくお願いします
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答6件
0
ループ条件が、aと直接関係ないならお書きの物で良いかと思いますが、ループカウンターをメソッドに提供して欲しいなら、
Ruby
10.upto(Float::INFINITY) do |a| 2 ~~~ 3 break if ~~~ 4 ~~~ 5end
投稿2016/11/18 03:28
総合スコア84555
0
少しひねった書き方かもしれませんが、こんなこともできます。
ruby
1# 1つ捨てる必要がある 2# (1)は「1から開始」の意味 3loop.with_index(1) do |_,i| 4 # 中身は省略 5end
投稿2016/11/18 04:11
総合スコア145184
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
参考情報
- Do something infinitely many times with an index http://stackoverflow.com/questions/9508044/
↑の回答の step をつかった例を試してみました。
a.rb
ruby
1p 1.step.size 2 30.step do |i| 4 puts i 5 break if i > 3 6end
実行結果
$ ruby a.rb Infinity 0 1 2 3 4
投稿2016/11/18 23:56
編集2016/11/18 23:59総合スコア22324
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
現実的、というのをどう考えるかだと思いますが、例示の loop { ... } も良いと思いますよ。
『Ruby 的なコード』、ということなら、考えている要件を書いてもらうと色々と例示してもらえるのではないでしょうか?
投稿2016/11/18 03:31
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
コンピュータ言語はマニュアルを確認するのが王道です。
Ruby 2.3.0 リファレンスマニュアル > 制御構造 for
投稿2016/11/18 03:21
総合スコア16415
0
ベストアンサー
ruby
1i = 0; loop{ break if i > 9 ; i += 1 2 puts i 3}
C
1int i; 2for ( i = 1; i < 11; i += 1 ) { 3 printf("%d \n",i); 4}
「forのように」ということでしたら、上のコードのような書き方も可能です。
ただし、カウンタ変数の処理タイミングが、C言語のfor文と異なるので注意してください。
上コードは両方とも1から10まで表示するので、もし実際に使うときは挙動を把握しましょう。
メリットは、カウンタ変数の処理の順番が、C系のforに似ているのと、
ループの処理が一行にまとまっているという点です。
デメリットは、手続き的だとか、マルチステートメントだとか。
まあ、あまりRubyっぽくない微妙な書き方ですが、「だから教えない」ではなく、
回答者の方が取捨選択できるように一応提示しました。
投稿2016/11/20 14:24
総合スコア5592
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。