Self による実装

Self による実装


これは Self による実装。sumim さんにソースコードを書いていただきました。ありがとうございました。



トレイト(クラス)定義

"トレイト(クラス)定義"
traits _AddSlotsIfAbsent:
 (| app = (). dialog = (). button = () |)
traits app _Define:
 (| preview = (^'preview by app') |)
traits dialog _Define:
 (| print = (^'print by dialog') |)
traits button _Define:
 (| help = (^'help by button') |)

オブジェクト定義

"オブジェクト定義"
globals _AddSlotsIfAbsent:
 (| app = (). dialog = (). button = () |)
app _Define:
 (| proto* = traits app |)
dialog _Define:
 (| proto* = traits dialog. successor* = app |)
button _Define:
 (| proto* = traits button. successor* = dialog |)

メッセージ送信

"メッセージ送信"
button help "==> 'help by button' "
button print "==> 'print by dialog' "
button preview "==> 'preview by app' "

ずいぶんと、すっきり書けるね。トレイトとオブジェクトの 2 つの定義があるとこが、肝でしょうか?