現在、独学でRubyを勉強している初心者です。
戻り値というものが出てきたのですが、よく意味がわかりません。
どういうものなのか、わかりやすく教えていただきたいです。
また、どのようなときに使うためのものなのでしょうか。条件分岐と組み合わさると、余計混乱してしまいます、、、。
ご回答、よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
ベストアンサー
ざっくり言うと、プログラムは上から下に順番に実行されます。
ruby
1number = 4 2 3def double(n) 4 n * 2 5end 6 7result = double(number)
のような場合も、
① number
に 4
が代入され、メソッド double
が定義される
② メソッドdouble
が定義される
③ result
に double(number)
の値が代入される
というような流れでプログラムが実行されます。
ここで、③のdouble(number)
が実行されるとき、比喩的に言うと、コンピュータは、double
が何なのかを知るため、③から②へ飛んで、そこで定義された内容に従って計算を行い、再び③に戻って、result = double(number)
のdouble(number)
の位置に、計算結果の 8
を戻し(返し)、result = 8
が実行されます。
そういう訳で、メソッドを実行する際、いったん定義式の場所に飛び、計算が終わると、プログラム上の元の場所に値を戻す(返す)ことになるため、メソッを実行した結果得られる値のことを「戻り値」だとか「返り値」だとか呼ぶようになったようです。
投稿2019/01/31 10:23
総合スコア207
0
最終的に評価されて返ってくる値が戻り値(返り値)です。
出力される値とは別物なので注意です。
ruby
1123.to_s 2#=> '123' 3 4def greeting(time) 5 if time == 'morning' 6 'Good morning.' 7 elsif time == 'evening' 8 'Good evening.' 9 end 10end 11 12greeting('evening') 13#=> 'Good evening.' 14 15puts 'Hello!' 16#=> nil
それぞれ返り値です。
投稿2019/01/31 09:12
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
プログラミング自体が初めてでしょうか?
まず、「メソッド」とは何かを勉強してください。
例えば、文字列の長さを調べるsize
というメソッドがあります。
"abc".size
と書いたときの、3
が戻り値(普通は返り値という)です。
Ruby
1str = "何らかの文字列" 2if str.size > 5 3 文字列のサイズが5より大きいときの処理 4end
こんな感じです。
自分でメソッドを定義する場合は、
Ruby
1def add(x,y) 2 x + y 3end 4 5a = add(10, 5)
とすると、add(10, 5)
の返り値は15
になります。
投稿2019/01/31 08:51
総合スコア84423
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。