readモチベーションRubyの関数の引数は値渡しである(参照渡しではない)ことを証明する背景プログラム言語ごとに、関数の引数が値渡しであったり参照渡しであったりと異なる。Rubyの記事を見ると、Rubyは参照渡しであるという記事を散見するが断言させてもらう。Rubyは値渡しである。アドレス番地などを用いた説明もできるがそれらは本記事の参考に譲り、ここではコードの振る舞いベースで値渡しであることの証明を行う。idは同値になっているため、変数には値が入っているのではなく、オブジェクトへの参照(ポイントのようなもの)が入っていることがわかる。配列を関数の引数にしてみる配列を関数の引数にして、関数内で変更するコードを書いてみる。#{array}"これを実行する。idが同値であることから同一オブジェクトへの参照が値渡しされていると言える。10とすると配列オブジェクトが指す値が変わり、関数の外で配列の値を確認すると変更されていることが確認できる。整数を関数の引数に渡すケースは?整数を渡す場合でも同様に、関数の引数に渡るのは整数オブジェクトの参照の値渡しが行われる。その様子を以下のコードで確認する。#{int}"実行結果はこの通り。idが同じであり、参照の値渡しが行われている。idが変わっているところ。ここは、引数ので渡した参照の値が指すオブジェクトを変更しているのではなく、新しいオブジェクトを指す参照を関数内のローカル変数に代入しているためだ。クドいようだがこれを以下のようにして確認する。idを調べると変数intと異なるものを指している。10の挙動が関数内のローカル変数に新しいオブジェクトへの参照を代入していることがわかる。[10,2,3]としていれば同様の結果になる。このようにRubyはオブジェクトへの参照が引数に値渡しで利用されている。