bool値に変換する「!!」
Rubyの条件式の結果は、
nilとfalse以外はすべてtrue
となりますよね?
なので、
def hoge "a" end if hoge p "TRUE" else p "FALSE" end
これの結果は
"TRUE"
となります。
しかし、
hogeメソッドの戻り値は、あくまで「a」であり、
「true」ではありません。
「hoge?」みたいなメソッドにする場合、
結果をbool値にしたい場合があります。
そういう場合には、こう書きます。
def hoge? !!"a" end
これで、「hoge?」の戻り値はbool値になります。
ruby-1.9.2-p290 :001 > !!"a" (irb):1: warning: string literal in condition => true ruby-1.9.2-p290 :002 > !!nil => false ruby-1.9.2-p290 :003 > !!"" (irb):3: warning: string literal in condition => true ruby-1.9.2-p290 :004 > !!1 => true ruby-1.9.2-p290 :005 > !!false => false ruby-1.9.2-p290 :006 > !!10.0 => true