From: matz@... (Yukihiro Matsumoto) Date: 1997-11-20T13:08:41+09:00 Subject: [ruby-dev:882] Re: extension of case まつもと ゆきひろです In message "[ruby-dev:881] Re: extension of case" on 97/11/20, Masaki Suketa writes: |助田です |=== を再定義する手があったんですね。ruby らしいというか、オブジェクト |指向言語らしいというか。結構トリッキーで、一瞬訳わからなかったです。 ええ,caseはforがeachを使うのと並んでメソッドを使う制御構造 なんです. |># でも,こういう場合は素直にifを使う方がわかりやすいのでは(^^; |=== を再定義するやり方は、素直じゃないと思うんですけど いやあ,場合によっては便利なんですけどねえ.正規表現とか範囲 オブジェクトとかはこの機能のおかげでcaseが使いやすくなってい ます.言い替えるとcaseは他の言語のようにif..elsif..の代替で はなく,(少々似ているが)違う制御構造になっていますね. これはCのforがwhileの書き換えであるが,Rubyのforが(働きは似 ているが)違う制御構造であるのと類似しているといえます. |ruby の言語の機能としてそういう書き方ができると便利かなと |思いまして(^^; |やっぱり素直に if ... elsif か。 ずぅっと以前にも某石塚さんがcaseでマッチに使う演算子を指定で きるようにする提案を出されたことがありますがあえなく却下され ました.やはり今回の提案も採用しないつもりです(それに字句解 析機が悲鳴を上げそうだし). やはり,そういう目的にはif..elsifを使って頂いた方がよさそう です. それとは別にModuleの比較演算子(<,>)は面白そうですねえ. まつもと ゆきひろ /:|)