トップ «前の日記(2006-02-24) 最新 次の日記(2006-03-08)» 編集

Route 477



2006-03-04

[ruby] Rangeリテラルは括弧で囲んだ方がいい

「0<=min && min <= 5」のつもりで

if 0..5 === min

とか書いてちょっとはまった. *1

「..」の方が優先順位が低いので, 上のは

if 0..(5 === min)

のように解釈されてしまう.だから,

if (0..5) === min

のように明示的に括弧を指定するのが正解.

ていうか,検索したらいくつか出てくるな (google:ruby range 優先順位). 確かに括弧を書いた方が読みやすい気もするのだが,それを推奨するためにわざとこういう優先順位になっている のだろうか?

*1 ちなみにこれは (0..5).include? min と同じ意味.