第三話 begin...end

begin...endというのは、rescueやensure節と一緒に使用することが殆どだと思うが、これは、意外な場所で使用できる。
たとえば、以下のようにスーパークラスを指定する場所にも書ける。

class Foo < begin p(x = Class.new); x end
  p superclass
end

実際には、使用できない場所を見つけるほうが難しいくらいだ。

p 10, begin 10; 20 end, 30
#=> 10 20 30

begin
  a = [1,2,3]
end[1] = 100
p a  #=> [1, 100, 3]

のように書けてしまう。
それも当然で、begin...endを、Rubyは式として処理しているのだった。