Ruby の
id:nurse さんの cmp を書いているとき、<=> が出てきて、Squeak の Smalltalk にはないから挙動をそのまま、
| 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 で起動できます。