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 とか。オレをクローニングしたら成功するのかー(笑)