From: WATANABE Tetsuya Date: 1998-10-23T19:14:58+09:00 Subject: [ruby-list:10304] Re: perl2ruby.html In message "[ruby-list:10302] perl2ruby.html" on 98/10/23, OHARA Shigeki writes: |大原です。 | |先日、Perl と Ruby の違いについて調べる機会があって、 |関谷さんのページがとても参考になったのですが、 |ちょっと気付いた点がありましたので。 |rbc0> a = 'aaa' |"aaa" a は、"aaa" というオブジェクトを示しています。 |rbc0> b = a |"aaa" b も a ではなく "aaa" というオブジェクトを示し ています。 |rbc0> a = 'ccc' |"ccc" このとき a には、新しいオブジェクト "ccc" を示 しています。b は、示すオブジェクトは変わりませ ん。a を間接的に参照している分けではありません。 |rbc0> b |"aaa" |rbc0> a = [1, 2] |[1, 2] |rbc0> b |"aaa" |rbc0> |どうも違うような気がするのですが、 |なにか私が勘違いをしているのでしょうか? たぶん、b は、「a の示す先」を常に a を間接的 に使用して参照していると思われているようなので すが、 b = a では、「a の示す先のオブジェクト」を b に定義 するだけです。a が示すオブジェクトが変わっても、 それは b には影響しません。 オブジェクトを直接修正するようなことをした場合 は、そのオブジェクトを参照しているすべての変数 に影響がありますので、次のようになります。 $ irb irb(main):001:0> a = "aaa" "aaa" irb(main):002:0> b = a "aaa" irb(main):003:0> a.sub!("aaa", "bbb") "bbb" irb(main):004:0> p b "bbb" nil -- WATANABE Tetsuya HP Japan e-mail Tetsuya_WATANABE@hp.com tetsu@jpn.hp.com