日本Rubyの怪

第六話 オプションがいっぱい

今日初めて知った。 /.../xxxxiiimmmnnnnoooooouuueeeesssss

第五話 ネストメソッド

メソッドは以下のようにネストして書ける。 def foo def bar end endどうしてこれを許しているのか、最近まで判らなかった。 bar()がfoo()の中でしか使用できないようになっているのであれば意味があるが、実際にはそうなっていないのだから。しかし、yarv-d…

第四話 変なcase

case文では、以下のように、場合分けの対象となる値を書かない記述が許される。 case when false, nil p "first" when false, 10, nil p "second" else p "else" end #=> "second"これは、whenの中で真になる値があった節が実行されるという意味で、結局、if…

第三話 begin...end

begin...endというのは、rescueやensure節と一緒に使用することが殆どだと思うが、これは、意外な場所で使用できる。 たとえば、以下のようにスーパークラスを指定する場所にも書ける。 class Foo < begin p(x = Class.new); x end p superclass end実際には…

第二話 rescueと代入

以下のように書くと、どう解釈されるのか? a = (raise "") rescue 10 p a #=> 10rescueの結果がaに代入されている。 従って、次のように解釈されていることがわかる。 a = ((raise "") rescue 10)rescueが代入よりも優先順位が高いように見える。 しかし、…

第一話 エイリアス

殆ど使用されていない機能だが、グローバル変数のエイリアスというのがある。 alias $a $b $b = 20 p $a #=> 20Rubyの過剰な柔軟性を見よ! 組み込み変数も使用できる。 alias $/ $b $b = 20 p $/ #=> 20もっと驚け。$SAFEもエイリアスできるぞ。 alias $SAF…