MethodFinder
id:Florianさんの日記を見てふと思い出したようにSqueaking.
うーむ、MethodFinderってやっぱスゲエよな。SystemBrowserが便利だとかなんとかその次元よりも、なんというかスゴいのだ。これって総アタリでやってるんだよね? (レシーバのallSelectorsに引数与えながら??)
以下、面倒くさいとこはいろいろ記述省略 1. 2. 3. ==> 1 + 2 --> 3 'ho'. 'ge'. 'hoge'. ==> 'ho' , 'ge' --> 'hoge' 'Hello, world'. 4. 'Hell'. ==> 'Hello, world' contractTo: 4 --> 'Hell' ==> 'Hello, world' truncateTo: 4 --> 'Hell' #(1 2 3). 3. ==> #(1 2 3) atRandom --> 3 ==> #(1 2 3) last --> 3 ==> #(1 2 3) max --> 3 ==> #(1 2 3) size --> 3 ==> #(1 2 3) third --> 3 #(1 2 3 4 5). [:each | each*2]. #(2 4 6 8 10). ==> #(1 2 3 4 5) collect: [:each...] ==> [:each | each * 2] value: #(1 2 3 4 5)
やっぱレシーバのクラス、パラメータのクラスのセレクタを総当たりしてるのかなあ。不思議な感覚。
面白いのは atRandomセレクタが選ばれることで、何回かやってると出たり出なかったりします。はは。
で、冗談ついでにやってみた
me. success. ==> me changed --> success ==> me clone --> success ==> me contentsChanged --> success ==> me copy --> success ==> me flash --> success ==> me knownName --> success ==> me modelWakeUp --> success ==> me scriptPerformer --> success ==> me shallowCopy --> success ==> me value --> success ==> me windowIsClosing --> success ==> me yourself --> success
激しく笑えた。すげーどれも面白いんですけど(笑).
甲乙付けがたいけど changedとかcontentsChangedはちょいと皮肉っぽい、flash,value,yourselfは小粋だ。それにしても…なんですか copy とか clone とか。オレをクローニングしたら成功するのかー(笑)