View
325
Download
5
Category
Preview:
DESCRIPTION
CROSS 2014 「言語CROSS」 Smalltalkからのお題です
Citation preview
解答
Smalltalkだと実にシンプル
ちなみに今現在いくつのオブジェクトがい
るのか見てみましょう
時間がかかるのでforkしておきます
Object allSubInstances
[Object allSubInstances size inspect] fork
実装の解説(1) 「小さな要素の組み合わせ」でできている
allInstancesから対話的にみていく
Behavior >> allSunInstances
Behavior >> allSubInstancesDo:
allInstancesDo: と allSubclassesDo: を使った再帰
になっている
allSubInstancesDo: aBlock self allInstancesDo: aBlock. self allSubclassesDo: [:sub | sub allInstancesDo: aBlock]
実装の解説 (2) Behavior>>allInstancesDo:
allInstancesDo: aBlock | inst next | inst := self someInstance. [inst == nil] whileFalse: [ next := inst nextInstance. aBlock value: inst. inst := next]
実装の解説 (3) Behavior>>allSubclassesDo:
Class >> subclassesDo:
allSubclassesDo: aBlock self subclassesDo: [:cl | aBlock value: cl. cl allSubclassesDo: aBlock]
subclassesDo: aBlock subclasses == nil ifFalse:[subclasses do: aBlock]
ちなみにいくつのオブジェクトが?
XXXXXX個でした
これらのオブジェクト達がメッセージを
送ってくれるのを待っている
ワクワクしてきます
膨大なオブジェクト空間に飛び込んで、
オブジェクト達を育くむ「育てゲー」
ちなみにセーブは一瞬
もっときついお題
SmallTalk R4.1チャレンジ http://smalltalk.smalltalk-users.jp/oshirase/smalltalkr41challenge
• gotoを新たに実装せよ
• 継承やソースの変更、クラスの削除等が行えなく
なるbeFinalメソッドを実装せよ、など
変態的なパワーに興味がある人は
「SmallTalk R4.1のつくりかた」 • http://smalltalk.smalltalk-users.jp/oshirase/smalltalkr41notsu
kurikata
Smalltalk Superpowers 勉強会資料
• http://atnd.org/events/11043
Recommended