電子書籍の厳選無料作品が豊富!

【引数と戻り値の違い】

 はじめまして。プログラミング初心者です。タイトルにもありますとおり、引数と戻り値の違いが分かりません。
 例えばRubyにおいて、メソッドを定義しても、呼び出さないと使えないことは理解できます。では、Aというメソッドを定義したあと、BがAに引数を渡したとします。そこからの流れがよく分からないのですが、Bが呼び出した瞬間、Aに値が渡されその後、Bに戻ってくるのでしょうか?
しかし、そうなるとそれは戻り値になるのではないのでしょうか?
 この違いをわかりやすく教えていただけないでしょうか。
 拙い文章で申し訳ありませんが、理解していただけると幸いです。

質問者からの補足コメント

  • 皆様、ご回答ありがとうございます。
    言葉足らずで申し訳ありません。
    重要なことを書き忘れていました。

    def profile(name)
     puts "my name is #{name}"
    end

    profile("bob")

    【間違ってれはすいません!】

    上記のようになった場合、returnを表記していないのに結局引数を代入したあと、呼び出し元に戻ってきていることになるのでしょうか?
    これは戻り値ではないのでしょうか?
    すみませんがよろしくお願いします。

      補足日時:2018/03/25 16:21

A 回答 (3件)

補足(2018/03/25 16:21)


> 上記のようになった場合、returnを表記していないのに結局引数を代入したあと、呼び出し元に戻ってきていることになるのでしょうか?
> これは戻り値ではないのでしょうか?

確かに、処理の制御は呼び出し元に戻ります。
でも、それは「戻り値」ではありません。

戻り値とは「値」とあるように何らかの値(オブジェクト)になります。


# 厳密にいえば、rubyではreturnが無い場合メソッドの最後に評価した結果(この例ではputsを評価した結果であるnil)が戻り値になります。
    • good
    • 0
この回答へのお礼

分かりやすく教えていただいてありがとうございました!
ようやく理解することができました!!

お礼日時:2018/03/26 09:11

ご質問の内容に沿って回答します。



引数:メソッドAに入力する変数
戻り値:メソッドAが出力する結果

今回の場合、Bが呼び出し元なので、呼び出し元Bが引数をAに渡したのなら、Aから出力された結果を受け取るもの(変数等)を、呼び出し元であるB側で別途用意する必要があります。

あと、引数と戻り値の型は違っていても構いません。(というかその場合が多いです)
例えば、引数が整数型、戻り値がboolean型(true/false)、引数が実数型、戻り値が文字列型等、メソッドの作りにより変わります。
    • good
    • 0
この回答へのお礼

具体的な例を用いて説明してくださって、ありがとうございました!!

お礼日時:2018/03/26 09:12

> 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です。

これでご理解いただけますでしょうか。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!