[#2023] Class Method の index — (Dezawa Shin-ichiro) <dezawa@...>

出沢です

13 messages 1997/02/02

[#2158] [Req] pack/unpack — keiju@... (Keiju ISHITSUKA)

けいじゅ@SHLジャパンです.

14 messages 1997/02/18
[#2166] Re: [Req] pack/unpack — matz@... (Yukihiro Matsumoto) 1997/02/18

まつもと ゆきひろです.

[#2277] ruby 1.0-970228 available — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです.

16 messages 1997/02/28

[ruby-list:2143] Re: [BUG] for line in $<

From:
Date: 1997-02-15 16:10:56 UTC
List: ruby-list #2143
けいじゅ@SHLジャパンです. 

In [ruby-list :02142 ] the message: "[ruby-list:2142] Re: [BUG] for
line in $< ", on Feb/15 18:35(+0200) matz@caelum.co.jp (Yukihiro
Matsumoto) writes:

>|[1] $<.type
>そうです.このようなものにはほかにmain(トップレベルのself)や
>ENVがあります.

んー. なるほど... なかなか奥が深いですね.

>|[2] cloneの定義
>特異クラスを継承しているというのはむずかしい表現ですね.
>cloneは特異メソッドも含めて継承していると表現してください.
>rubyの実行モデルには「特異クラス」というものはありません.こ
>れは実装上の都合です.

どうも実装上の話しがこびり付いてしまっていて... 以後気をつけます. 

# このMLを読んでいる他の人にも良くない影響がありますしね.

>|[3] 特異クラスの継承
>特異メソッドを含めてオブジェクトをコピーする手段はcloneしか
>ありません.ちなみにdupは「同じ内容のオブジェクトを作る」こ
>としか保証していません.実際はデフォルトの動作ではcloneして
>いますけど.

そうすると, dupとcloneは違うメソッドなの? 

>|[4] cloneの再定義
>「特異メソッドを含めて複製する」ですね.その方が良いと思います.

了解しました.

>|[5] オブジェクトの比較
>できないでしょうね.特異クラスそのものがrubyからはみえない概
>念ですから,それを使って比較することはrubyの範囲内ではできま
>せん.もちろん,Cでメソッドを追加すれば可能ですけど,その場
>合でも,cloneは特異クラスを共有するのではなく,特異クラスの
>コピーを作っていますから,単純な比較ではすまないでしょうね.

># 特異メソッドに関してはSelf(言語)のモデルを想像してください.
># 実装にとらわれて特異クラスのことを考えると混乱します.

なるほど. その通りですね. 

# Selfといって分かる人はあまりいないとおもいますが...

ということは, これって, 結構重要なことを言っているような気がします.

同じ振舞いをするオブジェクトかどうかを比較する必要はないようにプログラ
ムを組まなくてはならないことを意味しますよね?

例えば, 特異メソッドを持たない一般のオブジェクトではクラスを比較しての
処理の振り分けはそれなりに意味があると思いますが, 例えば:

def foo
  ...
  case o.type
  when Foo
    ...
  when Bar
    ...
  end
  ...
end

などですね. 特異メソッドを持つオブジェクトのことを考えると上記のような
処理はあまり良くないことになるんですかね? これだと, 特異メソッドを定義
したことによって正確が変わったオブジェクトに対して, 適切な処理を行うこ
とはできませんので... 上記のような方法よりも, 例えば, ダブルディスパッ
チで処理を振り分ける方が良いってことになるんですね...

def foo
  ...
  o.dispatch
  ...
end

class Foo
  def dispatch
    ...
  end
end

def special_obj.dispatch
  ...
end

__
.....................................石塚 圭樹@SHLジャパン(株)...
------------->アドレス変わりました!! e-mail: keiju@shljapan.co.jp <----

In This Thread