![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
【引数と戻り値の違い】
はじめまして。プログラミング初心者です。タイトルにもありますとおり、引数と戻り値の違いが分かりません。
例えばRubyにおいて、メソッドを定義しても、呼び出さないと使えないことは理解できます。では、Aというメソッドを定義したあと、BがAに引数を渡したとします。そこからの流れがよく分からないのですが、Bが呼び出した瞬間、Aに値が渡されその後、Bに戻ってくるのでしょうか?
しかし、そうなるとそれは戻り値になるのではないのでしょうか?
この違いをわかりやすく教えていただけないでしょうか。
拙い文章で申し訳ありませんが、理解していただけると幸いです。
No.3ベストアンサー
- 回答日時:
補足(2018/03/25 16:21)
> 上記のようになった場合、returnを表記していないのに結局引数を代入したあと、呼び出し元に戻ってきていることになるのでしょうか?
> これは戻り値ではないのでしょうか?
確かに、処理の制御は呼び出し元に戻ります。
でも、それは「戻り値」ではありません。
戻り値とは「値」とあるように何らかの値(オブジェクト)になります。
# 厳密にいえば、rubyではreturnが無い場合メソッドの最後に評価した結果(この例ではputsを評価した結果であるnil)が戻り値になります。
No.2
- 回答日時:
ご質問の内容に沿って回答します。
引数:メソッドAに入力する変数
戻り値:メソッドAが出力する結果
今回の場合、Bが呼び出し元なので、呼び出し元Bが引数をAに渡したのなら、Aから出力された結果を受け取るもの(変数等)を、呼び出し元であるB側で別途用意する必要があります。
あと、引数と戻り値の型は違っていても構いません。(というかその場合が多いです)
例えば、引数が整数型、戻り値がboolean型(true/false)、引数が実数型、戻り値が文字列型等、メソッドの作りにより変わります。
No.1
- 回答日時:
> Bが呼び出した瞬間、Aに値が渡されその後、Bに戻ってくるのでしょうか?
> しかし、そうなるとそれは戻り値になるのではないのでしょうか?
Bが呼び出した瞬間、Aに値(引数)が渡されその後、
メソッドAの中で、渡された値(引数)をいろいろ処理して
その処理結果をreturnで戻されるのが、戻り値です。
# メソッド定義
def plus1(x)
y = x + 1 # ②
return y # ③
end
# MAIN
v = plus1(10) # ①
print(v) # v は 11
上の例で説明すると
・MAIN側で、値10をメソッドplus1に「引数」として渡します(①)
・メソッドplus1内で渡された値10が処理されて11になります(②)
・メソッドplus1内の最後で処理された値11がreturnで呼び出し元に「戻り値」として渡されます(③)
・①でメソッドplus1の戻り値11が変数vに代入されます。
引数は10、戻り値は11です。
これでご理解いただけますでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript useStateの分割代入について 1 2022/05/06 10:02
- JavaScript カラーミーショップのsectionループ内で、[引数][戻り値]ありの関数的な処理を行いたいです。 1 2022/05/07 19:39
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/17 18:41
- その他(プログラミング・Web制作) pythonのプログラムについての質問です。 1 2023/05/26 10:31
- Visual Basic(VBA) Excel のユーザー定義関数でソルバーが動作しない 1 2022/09/05 19:51
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/06 09:28
- Java java 引数 戻り値のあるメソッド 3 2023/02/12 06:23
- 数学 確率の問題 4 2023/02/24 01:07
- C言語・C++・C# 変数の初期化について 5 2022/10/02 08:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
1、Rstudioで回帰直線を求める...
-
(再質問)エクセルのマクロボ...
-
エクセル 連続保存マクロ
-
Beautiful Soupのインストール...
-
ビーリアルのユーザー名を変え...
-
pandasでsqlite3にテーブル作成...
-
Ruby on railsをrails sで立ち...
-
ファイルの切り出しプログラム...
-
GitHubについて
-
Rubyのみでスレがあってそこに...
-
IDLE.Shell 3.10.0
-
プログラミング初学者の勉強方法
-
NCルータープログラム学習方法
-
特定のセルの文字数を数え、奇...
-
C言語の入力した文字を反転させ...
-
未経験者がwebサービスを開発す...
-
void lcd_str(unsigned char* p...
-
情報の表現。()内がどうしても...
-
pythonのerrorコード
-
三項でたとえば交換って
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Rubyの超初心者です。「戻り値r...
-
【BrowseForFolderでデスクトッ...
-
python return 関数
-
【引数と戻り値の違い】 はじめ...
-
CloseとQuitについて
-
再帰に関する質問です。
-
ブロックつきメソッドやyield文...
-
railsチュートリアル5章の演習
-
【Ruby】 文法的に何が悪いの...
-
rubyでのproc
-
ぱいソン
-
Rubyにインクリメンタル演算子...
-
ジェネレーターとはなんですか?
-
railsでアプリケーションコント...
-
ハッシュ(単語数を数える) た...
-
Ruby Fileクラスについて
-
レコードセットオブジェクトの...
-
timesの使いどころ
-
Unixのwcコマンドの簡易版ですが
-
自作したメソッド・・・こんな...
おすすめ情報
皆様、ご回答ありがとうございます。
言葉足らずで申し訳ありません。
重要なことを書き忘れていました。
def profile(name)
puts "my name is #{name}"
end
profile("bob")
【間違ってれはすいません!】
上記のようになった場合、returnを表記していないのに結局引数を代入したあと、呼び出し元に戻ってきていることになるのでしょうか?
これは戻り値ではないのでしょうか?
すみませんがよろしくお願いします。