Rubyで稀に目にする!!
というイディオムがある。 具体的には以下のように使われる。
!!val
このイディオムは、値val
を真偽値に変換するものだ。 !!
はnot演算子!
を2つ重ねたもので、以下と同じである。
!(!val)
このイディオムの返却値は以下のとおり。 値がfalse
かnil
以外ならtrue
を、false
かnil
ならfalse
を返す。
!!nil #=> false
!!"abc" #=> true
!!false #=> false
not演算子は値がfalse
かnil
ならtrue
を返す。 これを2つ重ねて結果を反転させることで、値を真偽値に変換できるようになるのだ。