Ce n' !! (double point d'exclamation) signifie?
Dans le code ci-dessous, à partir d'un blog de par Alias, j'ai remarqué que l'utilisation de la double point d'exclamation !!
. Je me demandais ce que cela signifiait et où j'ai pu aller dans l'avenir pour trouver des explications pour la syntaxe de Perl comme ça. (Oui, j'ai déjà cherché pour !!
à 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;
...
}
Mise à JOUR
Merci pour toutes vos réponses.
Ici, c'est autre chose, je viens de trouver qui est lié La Liste de Squash de l'Opérateur x!!
- Si vous pensez que
!!
est un plaisir de l'opérateur, d'essayer les-->
opérateur dans une boucle for. 🙂 - L'éther, pouvez-vous poster un lien vers la --> opérateur? Je ne sais pas comment faire pour le trouver sur google.
- ici, vous allez (vous allez rire; ne me déteste pas): stackoverflow.com/questions/1642028/...
- Génial! Je n'étais pas au courant C a lolcat opérateurs 🙂
Vous devez vous connecter pour publier un commentaire.
Il est à seulement deux
!
boolean pas les opérateurs assis les uns à côté des autres.La raison d'utiliser cet idiome est de s'assurer que vous recevez un
1
ou un0
. En fait il retourne une chaîne vide qui numifys à 0. Il est généralement utilisé uniquement en numérique, booléen ou contexte bien.Vous verrez souvent cette Code De Golf compétitions, parce que c'est plus courte que d'utiliser le ternaire
? :
opérateur avec1
et0
($test ? 1 : 0
).!!!!
dans mon code, car!!
confond vim est la coloration syntaxique et l'autre!!
la restaurer!1-!
opérateur 🙂!!
"forces boelean contexte".pas-pas.
Il convertit la valeur d'un booléen (ou aussi près que Perl arrive à une telle chose).
Parce que les trois autres réponses affirment que la gamme est "0" ou "1", j'ai juste pensé que je le mentionne que les booléens en Perl (retourné par les opérateurs comme
==
,not
, et ainsi de suite) sontundef
et1
, pas0
et1
.and
etor
, qui, tout simplement, de retour de l'opérande à l'origine de leur renvoyer false.) (Voir perldoc.perl.org/perlsyn.html#Truth-and-Falsehood)defined(undef)
est faux, maisdefined(1==2)
est vrai.