Cogito Ergo Sum.

我思う故に我あり

Rubyの「if」でハマるとは…(涙)。

 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上でインデントを表現するために「全角スペース」を用いています。そのため、そのままコピペして実行するとエラーになると思います。