From: Masou Date: 2007-02-01T19:26:43+09:00 Subject: [ruby-list:43150] 配列は、メソッド呼出における引数初期化の例外なんでしょうか? Masouです。 2度目です。すみません。 > 再帰でメソッドを呼び出して、そのメソッドがローカル変数(や引 > 数)を書き換えても、その変更は呼び出し元には影響を与えません。 > ローカル変数や引数はメソッド呼び出しごとに初期化される独立し > た存在です。ですから、これは「正しい」動作ですね。 文字列は初期化されますが、Arrayは初期化されず、 書換えた結果が呼び出し元に返されてます。 [テストプログラムです。] ------- def henkan(ary, str) p [21, str, ary] ary.shift str = "new" p [22, str, ary] end str = "old"; ary = ["(", "{"] p [11, str, ary] henkan(ary, str) p [19, str, ary] [結果です] ------------ [11, "old", ["(", "{"]] [21, "old", ["(", "{"]] [22, "new", ["{"]] [19, "old", ["{"]] 配列の場合には、初期化されてないようにみえます。 レファレンスも読んだんですがよく解からなくて 質問させていただきました。 よろしくお願いします。 ttp://masou.blogspot.com/