[#21157] あったらうれしいメソッド to_n, to_n!, to_s! — ogino@...

荻野です。あったらうれしいメソッドということで書いてみます。

16 messages 2000/03/03

[#21159] メソッドの入り口 — ogino@...

荻野です。もうひとつご指導ください。

93 messages 2000/03/03
[#21170] Re: メソッドの入り口 — Shin-ichiro Hara <sinara@...> 2000/03/03

原です。

[#21243] Re: メソッドの入り口 — keiju@... (石塚圭樹) 2000/03/07

けいじゅ@日本ラショナルソフトウェアです.

[#21247] Re: メソッドの入り口 — 中村暁史 Nakamura Akifumi <BXQ04723@...> 2000/03/07

[#21267] 引数コピーとオブジェクト指向 (Re: メソッドの入り口) — Hideto ISHIBASHI <s34204@...> 2000/03/08

石橋秀仁です。

[#21272] Re: 引数コピーとオブジェクト指向 (Re: メソッドの入り口 ) — 中村暁史 Nakamura Akifumi <BXQ04723@...> 2000/03/08

[#21276] Re: 引数コピーとオブジェクト指向 (Re: メソッドの入り口 ) — nobu.nakada@... 2000/03/09

なかだです。

[#21279] Re: 引数コピーとオブジェクト指向 (Re: メソッドの入り口 ) — ogino@... 2000/03/09

oop未満の世界観の荻野です。

[#21282] Re: 引数コピーとオブジェクト指向 — Tomoyuki Kosimizu <greentea@...2.so-net.ne.jp> 2000/03/09

越水です。

[#21285] Re: 引数コピーとオブジェクト指向 — ogino@... 2000/03/10

荻野です。

[#21293] Re: 引数コピーとオブジェクト指向 — Matsuo Hisanori <hisanori@...> 2000/03/10

松尾です。

[#21297] Re: 引数コピーとオブジェクト指向 — ogino@... 2000/03/10

荻野です。

[#21302] Re: 引数コピーとオブジェクト指向 — 土岐 仁謙 <toki@...> 2000/03/10

土岐です。

[#21371] Re: 引数コピーとオブジェクト指向 — Matsuo Hisanori <hisanori@...> 2000/03/13

松尾です。

[#21374] Re: 引数コピーとオブジェクト指向 — TADA Tadashi <sho@...> 2000/03/13

ただただしです。

[#21365] Re: 引数コピーとオブジェクト指向 — Matsuo Hisanori <hisanori@...> 2000/03/13

松尾です。

[#21280] raise non-Exception object — Kenichi Komiya <kom@...3.rim.or.jp>

24 messages 2000/03/09
[#21283] Re: raise non-Exception object — nobu.nakada@... 2000/03/09

なかだです。

[#21315] Re: raise non-Exception object — Kenichi Komiya <kom@...3.rim.or.jp> 2000/03/11

[#21342] Re: raise non-Exception object — nobu.nakada@... 2000/03/12

なかだです。

[#21384] ruby 1.4.4 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

35 messages 2000/03/13

[#21442] 配列内のソート — Takayuki Tanaka <tanaka@...>

こんにちは Tanです。

16 messages 2000/03/15

[#21583] ruby for Web — TAKAHASHI Masayoshi <maki@...>

高橋征義です。

27 messages 2000/03/22
[#21584] Re: ruby for Web — "NAKAMURA, Hiroshi" <nakahiro@...> 2000/03/22

なひです.

[#21649] net-1.1.10 — TAKAHASHI Masayoshi <maki@...>

高橋征義です。net/http 使いたおし中。

17 messages 2000/03/27

[#21669] new version of mod_ruby & eRuby — Shugo Maeda <shugo@...>

前田です。

14 messages 2000/03/28

[ruby-list:21319] Re: 引数コピーとオブジェクト指向

From: sho@... (TADA Tadashi)
Date: 2000-03-11 05:03:57 UTC
List: ruby-list #21319
ただただしです。

#出遅れ感がありますが。読み落としがあったらご容赦を。

Wakou Aoyama wrote:
>> name = 'John'
>> john = Person.new (name)
>> name.sub! (/.*/, 'Paul')
>
>これも別に問題は無いですよね。結婚した場合など、当然のように名前がかわっ
>たりしますし。

たぶん例が悪いんだと思うけど、この例に限ればすごく問題があると思うので
すが。これを問題ないという人がけっこう多くて驚きというか。この場合の最
大の問題は、nameの(中身)の変更をjohn自身が知り得ないということです。
Personという名前を与えられたクラスのインスタンスが、自分が表現する人の
名前が変わったことを知らなくていいはずがない。

例えば名前だけじゃなくて読みもPersonに持たせたいと思ってこうしたら、

class Person
   def initialize( name, yomi )
      @name = name
      @yomi = yomi
   end
end

yomiとの不一致を招く「外部から勝手にnameの中身を書き換えること」を許容
できるわけがありません。だからこの場合はinitializeでdupして、名前と読み
を同時に書き換えるためのメソッドを提供するべきですよね。だから私は(この
例では)「dupすべき」が唯一の正解だと思います。

#人物をidentifyするのはnameじゃなくてPersonなんだから。

もちろん他の例では書き変わったことを認識しなくていい場合もあるでしょう。
そんなときはdupの必要はないわけで、けっきょく「時と場合による」としか言
えず、その判断の責任はクラスの設計者にあると思います(利用者ではなく。ま
してドキュメントに書けばいいってものでもない)。

#もっとも常にそこまで気を配るのが難しい:-) 少なくとも自分しか使わない
#ライブラリでそんなことはしないです。

たぶん、Stringというあまりにプリミティブな例を出しちゃったからややこし
くなったんじゃないかしらん? そもそもStringが破壊的メソッドを持ってなけ
ればよかったというか(笑)。

例えばこんな時にはpersonのdupは不要:

class Family
   def initialize
      @persons = []
   end
   def add( person )
      @persons << person
   end
end

#もちろんpersonはPersonクラスのインスタンス

--
□Don't □ただただし@神奈川県相模原市
□Think,□こま犬: http://www.bekkoame.ne.jp/~sho/komainu/
□Buuuy.□SUPER Cub: http://www.bekkoame.ne.jp/~sho/cub/

In This Thread