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).