Rubyの!!(not not)というイディオムについて
タグ: ruby / 初版公開: 2014-03-10

Rubyで稀に目にする!!というイディオムがある。 具体的には以下のように使われる。

!!val

このイディオムは、値valを真偽値に変換するものだ。 !!はnot演算子!を2つ重ねたもので、以下と同じである。

!(!val)

このイディオムの返却値は以下のとおり。 値がfalsenil以外ならtrueを、falsenilならfalseを返す。

!!nil   #=> false
!!"abc" #=> true
!!false #=> false

not演算子は値がfalsenilならtrueを返す。 これを2つ重ねて結果を反転させることで、値を真偽値に変換できるようになるのだ。