二重否定の使用 (!!) [重複] 質問する

二重否定の使用 (!!) [重複] 質問する

さて、私は次のようなコードを見つけました

@documents_names = sort {
         !!$deleted_documents_names{$a} == !!$deleted_documents_names{$b}
          ? uc($a) cmp uc($b)
          : !!$deleted_documents_names{$a}
          cmp !!$deleted_documents_names{$b}
         } @documents_names;

二重否定の使い方を初めて見ました。二重否定は何に使うのでしょうか?いつ使うのでしょうか?

ベストアンサー1

非ブール型をブール型 (dualvar(0,"")または1) に変換します。

これは、明示的にキャストする (より多くの文字が必要になる可能性がある) 代わりにこれを行うためのショートカット方法です。演算子は、!引数の真偽を否定します。したがって、2 つが使用されます。

多くのオブジェクト タイプは「真実」であり、他のオブジェクト タイプは「偽」です。

  • 唯一の偽値は、、、0および一部のオーバーロードされたオブジェクトです。undef"""0"
  • 真の値の例としては1、、"asdf"およびその他すべての値があります。

おすすめ記事