Rubyの嫌なところ

Rubyクックブック』を読んで、早速、嫌なところをいくつか書いてみる。

  • 関数にカッコが不要なので優先順位に注意しないといけない
1.upto 3 do |x|
  puts x
end
# 1
# 2
# 3

1.upto 3 { |x| puts x }  # ブロックが3にバインドしてしまう
# SyntaxError: compile error

個人的には関数呼び出しのカッコはなるべく付けるべきだと思うのだが、Rubyistは付けているのだろうか。Rubyの構文の曖昧さはPythonPerlの中間的なところなのだろうか?

  • 配列の要素を自動拡張してしまう
a = []
a[3] = 'a'  # => [nil, nil, nil, "a"]

要素がない所にも代入できる。Pythonならもちろんエラー。これはクックブックを読む前から気になっていたことだが、意図しない代入でも落ちてくれないのでバグを発見しにくい。もちろん、やり方次第で回避も可能だと思うが。