perl - una - Uso de doble negación(!!)
reglas de inferencia doble negacion ejemplos (2)
¡Eso es mucho funk para un bloque de sort
!
Es esencialmente un tipo de dos niveles:
- ascii-betical
- archivos eliminados primero, luego recuperados
Entonces uno podría reescribirlo como (no probado):
@documents = sort { exists $deleted_documents_names{$a} # same effect as ''!!''
<=>
exists $deleted_documents_names{$b}
||
uc( $a ) cmp uc( $b )
}
@documents;
Esta pregunta ya tiene una respuesta aquí:
- Que hace !! (doble signo de exclamación) significa? 3 respuestas
De acuerdo, me encontré con un código que se parece a
@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;
Es la primera vez que veo el uso de la doble negación. ¿De qué sirve? ¿Cuándo lo usaría una persona?
Convierte tipos no booleanos a boolean ( dualvar(0,"")
o 1
).
Es una forma abreviada de hacer esto, en lugar de intentar lanzarlo explícitamente (lo que puede tomar más caracteres). El !
el operador niega la veracidad de su argumento. Por lo tanto, dos de ellos se utilizan.
Muchos tipos de objetos son "verdad" y otros son "falsey".
- Los únicos valores falsos son
0
,undef
,""
,"0"
y algunos objetos sobrecargados. - Los ejemplos de valores verdaderos son
1
,"asdf"
y todos los demás valores.