die さんの PostScript 版を強引に (ry その2

無名関数を返さずに、かつ、メソッドにまとめてしまってよいならば、exit もでき、よりシンプルに書けます。

Object >> case: caseArray
  caseArray pairsDo: [: case : execBlock |
    (case = self or: [case = #else]) ifTrue: [^ execBlock value]]
x挨拶s
x挨拶s _ { '朝'. ['おはよう']. '昼'. ['こんにちは']. '夜'. ['こんばんは']. #else. ['ちーす']}. '昼' case: x挨拶s "=> 'こんにちは' "
'真夜中' case: x挨拶s   "=> 'ちーす' "