From: shugo@... (Shugo Maeda) Date: 1997-11-20T10:55:54+09:00 Subject: [ruby-dev:876] Re: extension of case 前田です。 In message "[ruby-dev:874] extension of case" Masaki Suketa wrote: |"when 1" と書いた場合は (=== 1) の省略形と考える。 case a when 1 ... end の場合,a === 1ではなく1 === aでチェックされます。 だから, |case a |when ( < 1) | hoge1 |when ( > 1) | hoge2 |end は class Limit def initialize(limit, message) @limit = limit @message = message end def Limit.<(limit) new(limit, :<) end def Limit.>(limit) new(limit, :>) end def Limit.<=(limit) new(limit, :<=) end def Limit.>=(limit) new(limit, :>=) end def ===(n) return n.send(@message, @limit) end end として, case a when Limit < 1 ... when Limit > 1 ... end のように書けますね。 # でも,こういう場合は素直にifを使う方がわかりやすいのでは(^^; -- 前田 修吾