12
votes

Quelle est la différence entre == ~ et! = À Groovy?

Quelle est la différence entre ceux-ci?

Pourquoi utiliser un sur l'autre? xxx


3 commentaires

Ce n'est pas == ~ , c'est == et ~ . Au moins en Java. Parlez-vous de Java ou Groovy?


Je parle de Groovy, oups.


Lorsque vous regardez la documentation, pouvez-vous souligner ce qui n'est pas clair sur leur différence? groovy-lang.org/operators.html


3 Réponses :


7
votes

en Java, ! = est "non égal à" et ~ est "Bitwise non" . Vous feriez effectivement faire variable == ~ 6 .

in groovy, le == ~ est "match de regex" . Les exemples seraient:

  1. "1234" == ~ / \ d + / -> évalue vers true
  2. "nonUBBers" == ~ / \ d + / -> évalue vers false

0 commentaires

27
votes

in groovy, le == ~ (AKA "L'opérateur" Match ") est utilisé pour une correspondance d'expression régulière. ! = est juste un vieil ordinaire "pas égal à". Donc ce sont très différents.

cf. http://groovy-lang.org/operators.html


3 commentaires

Est-ce que == ~ en tant qu'opérateur de correspondance s'applique à variable == ~ 6 ?


Bonne question réellement. Habituellement, la correspondance d'expression régulière nécessite des barres obliques, mais un court test avec def var = 3; a abouti à: var == ~ 4; étant false et var == ~ 3; étant vrai , il pourrait donc y avoir une sorte de manipulation spéciale. Je ne suis pas expert groovy cependant.


@Sotiriosdelimanolis Pour finalement jeté un peu plus de lumière sur cette question: les barres obliques à Groovy sont pas une exigence particulière pour les modèles, mais simplement une autre façon de déclarer une chaîne. Donc / foo / est en fait la même chose que "foo" . Et je crois que Groovy traite simplement le 6 comme "6" (car la variable est un def ).



6
votes

in Groovy, vous devez également être conscient que, en plus de == ~ , alias "Opérateur de match", il existe également = ~ , alias "rechercher l'opérateur" et ~ , alias "motif opérateur".

Tous sont expliqués ici .

== ~ Type de résultat: booléen / booléen (il n'y a pas de primitives à Groovy, tout n'est pas ce qu'il semble!) < / p>

= ~ Type de résultat: java.util.regex.matcher

~ Type de résultat: java.util.regex.pattern

i présume que l'interpréteur / compilateur groovy peut distinguer entre ~ ~ utilisé comme opérateur de motif et ~ utilisé comme un Bitwise, pas (c'est-à-dire son Utilisation en Java) via le contexte: le premier sera toujours suivi d'un motif, qui sera toujours bracké dans les délimiteurs, généralement / .


0 commentaires