ruby の罠コード(つーか自分が嵌ったコード..)
i = 100
while --i
print "#{i}\n"
end
延々と100がプリントアウトされます。理由は
- rubyには
--や++といった単項演算子(メソッド?)は存在しない。 - --i は
(-(-(i)))と解釈され、エラーはもちろん警告も出ない。
いやまぁ、 rubyにも -- / ++ があると疑いもしなかった自分もアレではありますが、なんつーか こう 直感的じゃないよね?
ちなみに、 while i-- だとパースエラーを引き起こすので、何とか気付けるみたいです。





コメントする