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で挙動が違うので、違いを吸収するためによくこういうメソッドをつくる。