
【引数と戻り値の違い】
はじめまして。プログラミング初心者です。タイトルにもありますとおり、引数と戻り値の違いが分かりません。
例えば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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSSのhtmlへの紐付けについ...
-
1、Rstudioで回帰直線を求める...
-
パソコンのスクリーンセーバー...
-
(再質問)エクセルのマクロボ...
-
Ruby require ライブラリー
-
ビーリアルのユーザー名を変え...
-
英数字を含む文字列(0-9,A-Z)...
-
100万件越えCSVから条件を満た...
-
C言語の入力した文字を反転させ...
-
pandasでsqlite3にテーブル作成...
-
Ruby on railsをrails sで立ち...
-
Accessで文字列のバイト数読み込み
-
ruby OpenURI::Meta
-
ルビー言語 ライブラリー
-
Ruby 変数 用途と違い
-
WinSCPで画像のように puttyを...
-
教えてください
-
プログラミングについてです。...
-
pythonエラー
-
VBScriptでExcel(2019)上のデー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access2000にExcel2000のデータ...
-
railsチュートリアル5章の演習
-
Ruby 同じ名前のメソッド
-
timesの使いどころ
-
Rubyのクラス
-
CloseとQuitについて
-
ハッシュ(単語数を数える) た...
-
再帰に関する質問です。
-
rubyでのproc
-
ブロックつきメソッドやyield文...
-
「arg」は何の略?
-
get() と find() の違いについて
-
エラー「メソッドまたはデータ...
-
教えてください。vb5.0
-
エクセルVBA オートフィルタで...
-
実行時エラー450:引数の数が一...
-
クラス名やモジュール名の競合...
-
VBAで型が一致しないエラー(バ...
-
HSTLやSSTL等のI/Oピン
-
What class are you in? には何...
おすすめ情報
皆様、ご回答ありがとうございます。
言葉足らずで申し訳ありません。
重要なことを書き忘れていました。
def profile(name)
puts "my name is #{name}"
end
profile("bob")
【間違ってれはすいません!】
上記のようになった場合、returnを表記していないのに結局引数を代入したあと、呼び出し元に戻ってきていることになるのでしょうか?
これは戻り値ではないのでしょうか?
すみませんがよろしくお願いします。