参照渡し、値渡しについて
こんにちは
今回は参照渡し、値渡しについて調べたことをまとめます。
これらは、関数やメソッドにおける引数の渡し方の種類を表す用語とのことです。
どちらも変数(実引数)を引数(仮引数)に渡すことを指していますが、渡し方が違うそうです。
値渡しは、変数をコピーして渡すことを言います。
def withdraw(price)
price += 10
end
amount = 100
withdraw(amount)
この場合100と言う値をコピーして渡しています。
amountの100に変更はありません。
参照渡しの場合は
amount = 100そのものを渡しているので、withdrawによる値の変更がamountにも影響します。
まとめると
- 値渡し:変数の中身を書き換えても呼び出し元には影響しない
- 参照渡し:変数の中身を書き換えると呼び出し元の変数の中身も書き変わる
こんな感じです。
Ruby に限らず多くのプログラミング言語では値渡しが基本の様です。
参照渡しに見えるのは値に変数が指すオブジェクトもコピーされている為です。
このことを参照の値渡しと言います。
今回は以上です。
参考文献