[#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

荻野です。

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

松尾です。

[#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

ただただしです。

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

From: ogino@...
Date: 2000-03-12 10:29:34 UTC
List: ruby-list #21348
荻野です。

At Sat, 11 Mar 2000 09:51:30 +0900,
中村暁史 Nakamura Akifumi <BXQ04723@nifty.ne.jp> wrote:

> 1:オブジェクトにはオブジェクト毎の立場ってものがある
> 2:変数には変数毎の立場ってものがある
> 
> ってことじゃないかと思うのです。
> で、Rubyは、1はサポート出来る(そりゃOOP言語なら当然だ)
> けども2は出来ない、ってことでしょうかね。
> 
> 2の必要性ってのは、たしかに無いわけじゃないとは思います。

同感です。個人的なイメージでは

1:メッセージを受信するオブジェクト毎の立場
2:メッセージを送信するオブジェクト毎の立場

って感じですが、大枠は同じですよね。変数というのはメッセージが通り抜け
る窓ですから。でもって Ruby は「どの窓(または窓の後ろの送信者)からメッ
セージがやってきたか」を判別できない仕様である。ということです。良いか
悪いかの価値判断はまた別の話です。

> ですが、ここで間違ったらイケナイなぁと思うのは、
> 2を実現するために1を犠牲にする、つまりコピーを
> (もしかしてするべきでないかもな場合でも)してしまう、
> ってのは、ちょっとまずいんじゃないかな?ということです。
> 
> 「あるインスタンスへの色々なアクセス手段を用意する」のと
> 「アクセスするインスタンスが色々ある」のとでは
> 全然違う概念ですから。

そうなんですが、現状の Ruby では言語としてのサポートが無いので利用者と
してそれをサポートしようと思ったときに、dup するというの選択肢に含めざ
るを得ない、ということだと思います。


> 2についてですが、勿論Rubyにそんなシカケはありませんので、
> 以下のような文法(?)を妄想しました。
(略)
> まあ、あえて言うならば、「鍵」を用意するっていう手は
> ありますけども。
> 全部のメソッドに(笑)、そのメソッドを呼んだ相手オブジェクトを
> 引数として取るようにして、その相手が認証済みオブジェクトで
> なければ、例外で蹴るとか。
> 
> あるいはソレが自動的に判るように、言語を拡張してもらうとか。

では私も「妄想モード」で。

いくつかのクラスに freeze ってメソッドがありますよね。あるオブジェクト
内から呼ばれたときは not frozen で、他からは frozen ならいいんじゃない
でしょうか。

class Perosn
  def initialize(name)
    @name = name
    encapsulate @name    # カプセル化を他のオブジェクトに広げる
  end
  def change_name(new_name)
    @name.sub! (/*./, new_name)
  end
end

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

john.change_name ('Paul') # 成功
name.sub!(/.*/, 'Adana')  # 例外発生

# encapsulate は早いもの勝ちで、二度目に実行しようとしても例外発生

> うーん。弱い変数にせよ相手オブジェクトyourselfにせよ、
> 要するに「呼んだのは誰ですか?」ってのが問題みたいですね。

だと思います。あるいは「もはや私の一存ではお答えいたしかねます。主人に
頼んでみてください」みたいな世界。現実問題としてオブジェクトは平等でな
く、時にはサラリーマン的な立場に身を落とさなければならないというか。

> 繰り返しますが、呼んだのが誰であるかを悩むのを回避するために
> そもそも呼ばれるもの(オブジェクト)のほうを分裂させて
> しまいましょう、っていう作戦は、少なくとも「常に正しい」やり方
> ではナイはずです。それだけは忘れないでください。

皆さんのおかげでそこは了解です。なにが「正しい」のかはわからんのですが。
でも現状の Ruby では「次善の策」に事実上なっているのでは? もっとも
「次善の策なんぞいらん」という人のほうが多いようですね。

> あ。一つ重要なことを忘れてた。
> 「呼んだのは誰か?」が真の問題ではないのだったっけ。

当面の話題としては「呼んだのは誰か?」でいいのだと思います。

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

In This Thread