Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

メタプログラミングRuby | 番外編 | イディオム 『!!』(double not)

概要

イディオム 『!!』(double not)

内容

イディオム 『!!』(double not)について。

Railsのコード等、オープンソースのコードを読んでいて見かけたイディオム。
!!を2つ重ねることによって、論理型の返却が必要な際にnilをfalseに変換しつつ
真偽判定を行うのに常用される記法
(軽く調べた範囲なので他にも用法があるのかもしれません)

サンプルコード

# encoding: utf-8

def hoge?(input)
  return nil if input.nil?
  input == "hoge" ? true : false
end

p hoge?("hoge")
p hoge?("hige")
p hoge?(nil)

p !!hoge?("hoge")
p !!hoge?("hige")
p !!hoge?(nil)

出力

true
false
nil
true
false
false