以下の内容はhttps://shinkufencer.hateblo.jp/entry/2020/08/28/235933より取得しました。


Rubyにおける ! を二重にした !! の使い所

エクスクラメーションマークの重ねがけ、二重のビックリマークなど、読み方が難しいやつ

環境

$ ruby -v
ruby 2.6.6p146 (2020-03-31 revision 67876) [x86_64-linux]

効能

明確に truefalse にしたいシーンがあるときに ! をかけてtrueかfalseにしてからさらにもう一回 ! をかけると、明確にtrueかfalseか表現することができる

x = 1
puts !!x
true

そのため、オブジェクトの存在チェックをする場合は !! をすると有効

余談:真と偽になるパターンに関して

基本Rubyの世界では falsenil 以外は真で評価をされる

false は nil オブジェクトとともに偽を表し、その他の全てのオブジェクトは真です。 - class FalseClass (Ruby 2.7.0 リファレンスマニュアル)

そのため下記のようなif文は成立する

x = 1
puts 2 if x
2

x = nil
puts 2 if x
# 何も出ない

このようなことがあるため !!hoge を能動的に使いたくなる場面は、? をつけるようなクラスを提供する時が多いかと思われる

読み方

英語圏では ! を bangと読むことがあるらしく、double-bangと読む読み方があるとのこと。

参考リンク




以上の内容はhttps://shinkufencer.hateblo.jp/entry/2020/08/28/235933より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14