成らぬは人の為さぬなりけり

エンジニアライフをエンジョイする為のブログ

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