Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

caseの条件式にprocを渡す

"==="は一般には"=="のエイリアスですがProcの場合はcallのような役割を果たします

:to_i.to_proc === "21"

これを生かすと、case文を以下のような感じで書く事ができます

p mu
#<MyUnit:0x007f963ab80330 @power=12, @speed=4, @hp=100>

def strong?
  proc {|i| i.power > 15}
end 

case mu
when strong?
  ##something
else
  ##something
end

また、以前の記事

class UltimateQuestion
  def self.=== a
    a == 42 ? true : false
  end
end

なんて書き方をした物も単にメソッド

def ultimateQuestion
  proc {|i| i == 42}
end 

と書いてあげるだけで済みます

この例だと値を参照するだけなので旨味がイマイチですが
複雑な事をするときは使い手がありそうです