[#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:21347] Re: 引数コピーとオブジェクト指向

From: ogino@...
Date: 2000-03-12 09:48:26 UTC
List: ruby-list #21347
荻野です。ちょっと例えが面白いので... 新しいことは書いていません。

At Fri, 10 Mar 2000 22:35:12 +0900,
IWAOKA Masahiro <iwaoka@tuat.jac-net.com> wrote:

> こう思って良いのです。外で name.sub! としても、そのオブジェクトが
> 変化してるだけで、Person の持っている name が「別のオブジェクト」
> に変わってるわけではないのです。

文法としてはそのとおりですが実社会ではそうはいかないでしょう、という話
です。別のオブジェクトに変わってなければ良いというわけではないでしょう。
逆に dup すれば良い(するしかない)というのは、オブジェクトが知らないと
ころで変化して欲しくないので泣く泣くコピーを取っておくという意味です。

> 現実世界の例を出すと、まつもとさんからちょっと違うと言われるかもし
> せませんが、僕に娘がいて、「いわおか A子」としましょう。この子が結
> 婚して「おぎの A子」になろうとも、外乱によってヤンキーになろうと、
> 尼さんになろうと、「僕の娘」が指し示す実体は同一人物です。

「いわおか A子」さん自身がが承知で名前が変わるのならいいのです。本人の
知らないところで名前が変わってしまうとなると、人間としては同一だから何
と呼んでもいいだろう、という論法は通じません。(と、思うんだけど)

class Perosn
  def initialize(name)
    @name = name
  end
end

name = 'John'
john = Person.new (name)

この場合、外のコードは名づけ親であり、Person クラスの john インスタン
スが名づけられた本人です。どのように名づけるかは john インスタンスの自
由になることではありませんが、名づけられた後に名付け親の気が変わったか
らといって自分の知らないところで名前を付け替えられてはたまったものでは
ありません。

# 「いわおか A子」さんがすごくかわいいのに目がくらんだ荻野が勝手に婚姻
# 届をだして戸籍を書き換えてもいいですか? やっぱり本人にお願いして、
# 両人の同意を戸籍係にメッセージとして出さなくてはだめですよね。(民法
# 742 条?)

似たような意見を端的に述べられている投稿では、

At Sat, 11 Mar 2000 14:03:57 +0900,
sho@spc.gr.jp (TADA Tadashi) wrote:

> ただただしです。
(略)
> >これも別に問題は無いですよね。結婚した場合など、当然のように名前がかわっ
> >たりしますし。
> 
> たぶん例が悪いんだと思うけど、この例に限ればすごく問題があると思うので
> すが。これを問題ないという人がけっこう多くて驚きというか。この場合の最
> 大の問題は、nameの(中身)の変更をjohn自身が知り得ないということです。

ということです。問題は、このような事態が発生しないようにするための手法
です。

1. ドキュメントに明記して、使う側が問題のある(私のあげた例のような)コー
   ドを書かないようにする。 → 問題点:使う側がそうしてくれるという保
   証がない。「カプセル化」という言葉に対する概念が人によって異なるか
   ら、インスタンス変数はオブジェクトが保護するべきと利用者が思っても
   無理は無いかも。(この辺、議論百出ということ自体を「本当のオブジェク
   ト指向の啓蒙をしていくべき」ととらえるかどうかもまた議論の対象です
   が)

2. クラス側で dup して、外部から与えられたオブジェクトは雛型として使用
   するにとどめる。 → 問題点:dup したものは元のオブジェクトではなく、
   それが問題となる場合や、dup が無意味である場合がある。効率が悪い。
   「本当のオブジェクト指向」ではない。

3. 広い意味での「破壊的な」メソッドを呼べる「資格」を、メソッドを呼ぶ
   (メッセージを送る)オブジェクト単位または窓口になる変数単位に設定す
   る → 問題点:それは Ruby ではない! そんな機能が言語として必要?

というところでしょうか。


-- 
荻野 充 (おぎの みつる) ... 「萩(はぎ)」にあらず
名古屋大学消費生活協同組合

In This Thread