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