Ruby の

id:nurse さんの cmp を書いているとき、<=> が出てきて、SqueakSmalltalk にはないから挙動をそのまま、

| aa bb |
aa := 3. bb := 5.

^ aa < bb
   ifTrue: [-1]
   ifFalse: [aa = bb ifTrue: [0] ifFalse: [1]]
" => -1 "

とか書いてはみたものの、なんだかなー(阿藤快ふうに)と思っていたところ、

| aa bb |
aa := 3. bb := 5.

^ (aa - bb) sign
" => -1 "

というのをふと思い付いたので、恥かきついでにメモ。(追記:aa - bb の返値が sign に応答できないといけないから、もちろん上のとは同義ではなく、文字列などにも使える Ruby の <=> と比べても応用範囲は狭いので注意…>自分)


教訓:
Method Finder に頼りすぎてはいけない。


補足:
Method Finder というのは、振る舞いからメソッドを探す(!)ためのある種“逆引き”ユーティリティ。「3. 4. 7」とかいうふうに、レシーバ、引数、(期待される)返値の順にリテラル(あるいは値を生成する式)をピリオドで区切って入力すると、該当するメソッドを列挙してくれます。

Squeak のように冗長性に富んだ API を持つ(悪く言えば、誰がこんなの使うんだ的メソッド群多数な(^_^;))システムにたいして、私のように“あるものはどんどん利用してラクしてやっつけてやろう…”というセコイ根性で接する人間にはたいへん重宝するものです。


デスクトップメニュー → open... → method finder で起動できます。