Ruby でびっくりマークが2つ出てくるアレの意味
Ruby のコードを見ているとよく出てくる!!のやつ。
def user_exists? !!find_user end
呼び方としては、
- エスクペラメーションマーク
- double-bang
- 二重否定
などがあるみたい。
意味
「true か false を返すメソッドをつくりたい」という場合はよくある。そんな場合、!!を使うことで確実にtrueかfalseを返せるということ。メソッドの結果を真偽値化している、みたいな感じか。
def user_exists? !!find_user end
上記コードの場合、find_user というオブジェクトがあるかどうかを調べたい。
たとえば、!をひとつだけにしてしまうとどうなるか。
def user_exists? !find_user end
find_userが true の場合、!をすることで false になってしまう- →
find_userが存在するのに、false が返ってきてしまうので、ユーザーが exist しないことになってしまう
Rubyの否定演算子2つ重ね「!!」(double-bang)でtrue/falseを返す|TechRacho(テックラッチョ)〜エンジニアの「?」を「!」に〜|BPS株式会社
ちなみに、!!はPHPやJavaScriptでも存在するようです。