Ruby 初心者スレッド Part 40
■ このスレッドは過去ログ倉庫に格納されています
0769デフォルトの名無しさん
2011/02/02(水) 16:50:43> それとも私の認識(もしくはこのサイトに対しての私の読解)にどこか間違いがあるのでしょうか?
結論から言うと Yes。
Ruby は、Fixnum だろうと Array だろうと「値渡し」。
まず Fixnum のような、配列じゃない場合は、値渡しになることは理解していると思う。
Ruby の Array は何を保持しているかというと、配列の先頭のアドレスだけを持っている。
(配列の実体を直接持っているわけではない。C言語での、char と char* の違いと同じ)
そしてメソッドに Array を渡すと、メソッドを受け取った側(仮引数)では、アドレスがコピーされている。
メソッドの呼び元の Array と、メソッドの中の Array の実体はそれぞれちがうものであり、
配列の先頭アドレスを、2重に持っていることになるので、「値渡し」ということができる。
※先頭アドレスを二重に持っているものの、それぞれが同じ場所を指しているので、
配列の実体( >>762 のるびまでの、[10, 20])は1つしかない。
■ このスレッドは過去ログ倉庫に格納されています