self[*arg] -> ()[permalink][rdoc] call(*arg) -> () self === *arg -> () yield(*arg) -> () 手続きオブジェクトを実行してその結果を返します。 引数の渡され方はオブジェクトの生成方法によって異なります。 詳しくは Proc#lambda? を参照してください。 「===」は when の所に手続きを渡せるようにするためのものです。 def sign(n) case n when lambda{|n| n > 0} then 1 when lambda{|n| n < 0} then -1 else 0 end end p sign(-4) #=> -1 p sign(0) #=> 0 p sign(7) #=> 1 また、以下のような syntactic sugar もあります。 fib = lambda{