Rubyでプログラムを書いていて、妙なところでハマってしまった(涙)。
if
p true
end
みたいにifの条件を書いていないのに、「エラーにならず」に
true
と出力されるのだ。
もっと驚いたのは、
if
p true
elsif
p false
end
と書いたら、
true
false
と出力されたこと!
if
p true
else
p false
end
も然り。
ちなみに、
p true if
はエラーになるけど、
p true if
p true
は、
true
true
と表示される!
p true if p true
も然り。
p true if p false
は
false
何となくわかってきたような、わからないような…?
「if」と「条件」の間で改行してるって見なされてるんだろうか? それとも、「if」も「elsif」も「else」もそれ1行で完結してるって見なされてる…? じゃあ「end」はどう解釈されてるんだろう…?
Rubyは時々こういう「エラーになって欲しいところで、エラーにならずに処理が続行されている」ことがある。Rubyは大好きだけど、これが厄介。
※上記のコードでは、html上でインデントを表現するために「全角スペース」を用いています。そのため、そのままコピペして実行するとエラーになると思います。