Okay so I came across a code which looks like
@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;
It's the first time I'm seeing the use of double negation. What's the use of it? When would a person use it?
It converts non-boolean types to boolean (dualvar(0,"")
or 1
).
It is a shortcut way of doing this, instead of trying to cast it explicitly (which may take more characters). The !
operator negates the truthness of its argument. Hence, two of them are used.
Many object types are "truthy", and others are "falsey".
0
, undef
, ""
, "0"
and some overloaded objects.1
, "asdf"
, and all other values.If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With