トップ «前の日記(2005-06-08) 最新 次の日記(2005-07-19)» 編集

Route 477



2005-06-21

[ruby] 括弧の省略の罠

最近、メソッド呼び出しの括弧を省略するスタイルを試しているのだが、例えば

def param(key)
  @cgi.params[key][0]
end

みたいなメソッドがあって(RubyでCGIするときの常套句ですね*1)、

page = param 'pg'

という風に書けるのだが、ここで「pageの指定がないときは0を代入したい」と思ったとき、

page = param 'pg' || 0

ではなく

page = (param 'pg') || 0

としなければならない(演算子の優先順位の問題)。

ちょっとはまったのでメモ。

*1 本当は@cgi[key]としたいところだが、ライブラリのバージョンの関係でruby1.6.xとruby1.8.xで挙動が違うので、違いを吸収するためによくこういうメソッドをつくる。