From: Matsuo Hisanori Date: 2000-03-13T14:15:57+09:00 Subject: [ruby-list:21376] Re: 引数コピーとオブジェクト指向 松尾です。 TADA Tadashi wrote: > > ただただしです。 > > Matsuo Hisanori wrote: > >すみません、僕の書き方が悪いのか、読み違えておられます。Sectionクラスを別に > >ちゃんと作っている、という前提です。 > >  うひー、本当だ。ごめんなさいごめんなさいごめんなさい。 # '(笑)'には多少ムッとしましたよ…。 >  でも「3」を選びます(笑)。ようするに、Stringは書き変わったことを > 知らせてくれないからというのが理由です。freezeでもいいけど、なんか > 書き換えられるStringとそうじゃないStringがシステム内に混在している > のはイヤなので、たぶんdupすると思います。 # Stringがちょっと違うな、と言うのは共通認識としていいみたいですね。では…。 sub と sub! の使い分けはどの様にお考えでしょうか? 利用する側の気分、というのは無しですよ。 -- 僕は、 Integerの様な「値」として扱いたい時は sub # age = age + 1 # name = name.sub(...) Sectionの様な「インスタンス」として扱いたい時は sub! # section.setName('庶務二課') # name.sub!(...) としています。 このルールは、同意して頂けますか? それとも「値」か「インスタンス」か区別出来ない? 一般的なルールとすべきモノではない? # 非常におおざっぱに言うと、クラス図上で、属性として現れるStringは「値」、クラスと # して現れるもの(めったにないけど)は「インスタンス」になります。 -- >  粒度の違うモンを並べて「全部dupするかしないか選べ」つーのは乱暴 > だと思うんですよ。けっきょく「時と場合による」が至言ということか。 「値」と「インスタンス」の区別 「インスタンス」を操作できる責任の明確化 が出来ていれば、やっぱりdupする必要は(殆ど)ないんですよ。