背景
メソッドの中で引数を変更してもその変更はメソッド外に影響を及ぼさないと思っている人がいますが、違います。
そこで、メソッド外に影響を及ぼす場合と及ぼさない場合をそれぞれ書いてみます。
実行方法
macのターミナルでRubyを起動
irb
###基本型 メソッドの引数の持つ値が変わらない場合
a=1
def method_primitive(a)
a=2
end
method_primitive a #2
a #1 #変わってない
###参照型 メソッドの引数の持つ値が変わる場合
temp={}
temp[1]=1
def method_reference(temp)
temp[1]=2
end
method_reference temp #2
temp[1] #2 #変わっている