Index: [Article Count Order] [Thread]

Date:  Mon, 12 Sep 2005 21:54:40 +0900
From:  MITSUJI Takamasa <mitsuji@....jp>
Subject:  [modeling-dojo:00456] Re: 複数の側面から分類したいとき
To:  modeling-dojo@....jp
Message-Id:  <39C5B799238ECCmitsuji@....jp>
In-Reply-To:  <20050912104806.65665.qmail@....jp>
References:  <20050912104806.65665.qmail@....jp>
X-Mail-Count: 00456

みつじです。

naka aki さん、

面白いですね。インスタンス化してから機能を追加できるんですね。
Cの関数ポインタとかC#のデリゲートとかでも同じようなことが
出来そうですけど、こんな簡単には出来ないでしょうね。


>--- MITSUJI Takamasa <mitsuji@....jp> からのメッセージ:
>> Rubyは勉強したことがないので分かりません。何か新しいことが出来るのでしょ
>> うか。
>
>RubyだとObject#extend(
>http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Object#extend )
>なんてな真似ができるんで、
>動的分類を正にやれちゃうかな、と思った…んですが、
>
>#クラス、モジュール定義
>module M処理済み
>	def hoge; puts "処理済み!"; end
>end
>module M未処理
>	def hoge; puts "未処理!"; end
>end
>class C修正提案
>end
>
>#呼び出し
>c=C修正提案.new
>c.extend(M未処理)
>c.hoge
>c.extend(M処理済み)#分類遷移!
>c.hoge
>c.extend(M未処理)  #また最初の分類に戻れ!
>c.hoge
>c.extend(M処理済み)
>c.hoge
>
>#実行&結果
>$ ruby -Ks a.rb
>未処理!
>処理済み!
>処理済み!  (←ここが未処理になるのを期待してたんだけど…)
>処理済み!
>
>ありゃ。同じmoduleを再び召還するのは駄目らしいです(^^;;;
>
>
>__________________________________
> Take an action against poverty
> http://pr.mail.yahoo.co.jp/whiteband/