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

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

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

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

Q&A

4回答

967閲覧

while文ループで減った引数を再使用したい

Yuta25jp

総合スコア13

Ruby

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

0グッド

1クリップ

投稿2019/02/04 11:08

編集2019/02/04 11:29

while文の複数回ループで減った引数の変数を、新しい名前で定義せずに再使用するにはどうしたらいいですか。

例として、

ruby

1 2a = 10 3i = 0 4 5while i <= 10 6 puts a = a-2 7 i ++ 8end

while文で引数が変化している変数aを、while文end 以下の行で、 a = 10として再使用する方法を教えて欲しいです。
ただし、
a=10
という記述を用いずにです。

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

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

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

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

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

bochan2

2019/02/04 11:17

「減った引数の変数」ということはWhile文内で変数から値を引いているということですか? 出来ればコードを編集ボタンから追記していただけると解決の役に立つと思います
asm

2019/02/04 13:00

rubyにインクリメント演算子はないので提示のソースは実行できませんよ
guest

回答4

0

a = 10 i = 0 b = a while i <= 10 puts b = b-2 i ++ end --- a を使う ---

投稿2019/02/04 11:40

y_waiwai

総合スコア87747

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

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

y_waiwai

2019/02/04 11:41

なんでかぶるw
Yuta25jp

2019/02/04 12:22

僕も驚きました。。
guest

0

while式を使わなければいいのではないでしょうか?
(余談ですが、Rubyの場合whileは式であって文ではないです)

ruby

1a = 10 2 3(a-2).step(a-2*11, -2){|a| 4 puts a 5} 6 7p a

あ、できた

ruby

1a = 10 2i = 0 3 4a.tap{|a| 5 while i <= 10 6 puts b = b-2 7 i += 1 8 end 9} 10 11puts a

投稿2019/02/04 13:24

asm

総合スコア15147

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

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

0

2 つの方法で書いてみました。
www.rb

ruby

1def task(a) 2 i = 0 3 while i < 10 4 puts a = a - 2 5 i += 1 6 end 7end 8 9a = 10 10 11task(a) 12puts "a = #{a}" 13 14[a].map do |a| 15 i = 0 16 while i < 10 17 puts a = a - 2 18 i += 1 19 end 20end 21puts "a = #{a}"

一つ目は 関数にして引数で a をわたすことです。 関数のなかで a を変更しても、呼び出し元の a は変化しません。
2つ目は、処理をブロックにすることです。こちらもブロック中で a を変更しても 元の a は 変化しません。

実行例
イメージ説明

投稿2019/02/04 13:22

katoy

総合スコア22324

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

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

0

単純に

Ruby

1a = 10 2b = a 3 4... 5 6while ... 7 ... 8 a = a - 2 9 ... 10end 11 12puts b

のように別な変数に入れておけばいかがでしょう?

投稿2019/02/04 11:40

dice142

総合スコア5158

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

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

Yuta25jp

2019/02/04 12:22

試してみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問