さて、私は次のようなコードを見つけました
@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"
およびその他すべての値があります。