Successfully reported this slideshow.
Your SlideShare is downloading. ×

Smalltalkお題「実行中の全オブジェクトを得るには?」

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 9 Ad

Smalltalkお題「実行中の全オブジェクトを得るには?」

Download to read offline

CROSS 2014 「言語CROSS」 Smalltalkからのお題です

CROSS 2014 「言語CROSS」 Smalltalkからのお題です

Advertisement
Advertisement

More Related Content

Advertisement

Similar to Smalltalkお題「実行中の全オブジェクトを得るには?」 (20)

Advertisement

Recently uploaded (20)

Smalltalkお題「実行中の全オブジェクトを得るには?」

  1. 1. CROSS 2014 言語CROSS Smalltalkお題解説 2014 SoftUmeYa, LLC Masashi Umezawa
  2. 2. Smalltalkのお題 現在実行中のプログラムの全オブジェクトを得る には?
  3. 3. 解答 Smalltalkだと実にシンプル Object allSubInstances ちなみに今現在いくつのオブジェクトがい るのか見てみましょう 時間がかかるのでforkしておきます [Object allSubInstances size inspect] fork
  4. 4. 実装の解説(1)     「小さな要素の組み合わせ」でできている allInstancesから対話的にみていく Behavior >> allSunInstances Behavior >> allSubInstancesDo: allSubInstancesDo: aBlock self allInstancesDo: aBlock. self allSubclassesDo: [:sub | sub allInstancesDo: aBlock]  allInstancesDo: と allSubclassesDo: を使った再帰 になっている
  5. 5. 実装の解説 (2)  Behavior>>allInstancesDo: allInstancesDo: aBlock | inst next | inst := self someInstance. [inst == nil] whileFalse: [ next := inst nextInstance. aBlock value: inst. inst := next]
  6. 6. 実装の解説 (3)  Behavior>>allSubclassesDo: allSubclassesDo: aBlock self subclassesDo: [:cl | aBlock value: cl. cl allSubclassesDo: aBlock]  Class >> subclassesDo: subclassesDo: aBlock subclasses == nil ifFalse:[subclasses do: aBlock]
  7. 7. ちなみにいくつのオブジェクトが? XXXXXX個でした これらのオブジェクト達がメッセージを 送ってくれるのを待っている ワクワクしてきます 膨大なオブジェクト空間に飛び込んで、 オブジェクト達を育くむ「育てゲー」 ちなみにセーブは一瞬
  8. 8. もっときついお題
  9. 9. もっときついお題 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

×