perl - uso - textos con signos de interrogacion y admiracion para niños
Que hace !!(doble signo de exclamación) significa? (3)
¡Son solo dos ! booleanos no operadores sentados uno al lado del otro.
La razón para usar este idioma es asegurarse de recibir un 1 o un 0 . En realidad, devuelve una cadena vacía que numifica a 0. Sin embargo, generalmente solo se usa en contexto numérico o booleano.
A menudo verá esto en las competiciones de Code Golf , porque es más corto que usar el ternario ? : ? : operador con 1 y 0 ( $test ? 1 : 0 ) .
!! undef == 0
!! 0 == 0
!! 1 == 1
!! $obj == 1
!! 100 == 1
undef ? 1 : 0 == 0
0 ? 1 : 0 == 0
1 ? 1 : 0 == 1
$obj ? 1 : 0 == 1
100 ? 1 : 0 == 1
En el siguiente código, de una publicación de blog de Alias , noté el uso del doble signo de exclamación. . Me preguntaba qué significaba y hacia dónde podría ir en el futuro para encontrar explicaciones para la sintaxis de Perl como esta. (Sí, ya busqué !! en perlsyn ).
package Foo;
use vars qw{$DEBUG};
BEGIN {
$DEBUG = 0 unless defined $DEBUG;
}
use constant DEBUG => !! $DEBUG;
sub foo {
debug(''In sub foo'') if DEBUG;
...
}
ACTUALIZAR
Gracias por todas sus respuestas.
Aquí hay algo más que acabo de encontrar que está relacionado The List Squash Operator x!!
Debido a que otras tres respuestas afirman que el rango es "0" o "1", simplemente pensé que mencionaría que los booleanos en Perl (como los devuelven operadores como == , not , y así sucesivamente) son undef y 1 , no 0 y 1 .
no, no
Convierte el valor a booleano (o lo más parecido posible a Perl).