ΨΨΨ Smalltalk/ Squeak 教えろゴルァ ΨΨΨ
■ このスレッドは過去ログ倉庫に格納されています
0604595
NGNGtype discriminationとは、ユーザプログラムが実行時に型情報を使った処理をすること。
それに対してmulti-methodはあくまで処理系の仕事ね。
>>597-598 のプログラムは、
methodsが(型情報 x ブロック)の組を持っていて
do:ループの中で適切なブロックを選択しているところが肝。
で、1つのメッセージ名に対応するメソッド候補の集合を
管理しているのがMultiMethodDictionary。
MultiMethodDictionaryはデータ構造的に、例えば
key value
+ { (SmallInteger, [:x | ... ]), (Float, [:x | ...]), ... }
- { (SmallInteger, [:x | ... ]), (Float, [:x | ...]), ... }
action: { (Animal, [:a | ... ]), (Drink, [:d | ...]), ...}
って具合。これが各クラスにあると思っといて。
■ このスレッドは過去ログ倉庫に格納されています