Ruby で複文を書く方法

Ruby では「( )」で複文が書けるそうな。
つまり、(statement; statement; statement) みたいなことができるらしい。

括弧の中で改行があるとそれは独立した式とみなされます。括弧の中でも改行はセミコロンを置いたのと同じ意味になります。

Re: 複数行にわたる式の評価


実際にやってみた。

### 文をセミコロンで区切る
irb> (puts 123; puts "foo"; puts true)
123
foo
true
=> nil
### 文を改行で区切る
irb> (puts 456
>> puts "bar"
>> puts false
>> )
456
bar
false
=> nil


ほんまやー!

みんな知ってた? 自分は全然知らんかった。

もしかして、今までこんな感じで書いていたのが

found = false
while line = gets()
  if line =~ pattern
    found = true
    break
  end
end


1 行にまとめてこう書けるということか?

found = false
while line = gets()
  (found = true; break) if line =~ pattern
end


うへー、知らんかった。
便利っちゃあ便利だけど・・・微妙。間違った '(' を書いてしまったら、syntax error が見つけにくいだろうなあ。ないほうがいいような気はする。少なくとも、改行が「;」と同じ扱いになるという仕様は、間違い探しがしにくくなるので廃止したほうがいいと思う。