=:=-Tests, wenn zwei Behälter (Variablen oder Elemente von Arrays oder Hashes) aliased sind, das heißt, wenn man ändert, ändert sich die andere Veränderung als auch?
my $x;
my @a = 1, 2, 3;
# $x =:= @a[0] is false
$x := @a[0];
# now $x == 1, and $x =:= @a[0] is true
$x = 4;
# now @a is 4, 2, 3
Wie für die anderen: === prüft, ob zwei Verweise auf das gleiche Objekt zeigen und eqv-Tests, wenn zwei Dinge sind strukturell gleichwertig. So wird [1, 2, 3] === [1, 2, 3]
falsch sein (nicht das gleiche Array), aber [1, 2, 3] eqv [1, 2, 3]
wird wahr sein (gleiche Struktur).
leg
vergleicht Strings wie Perl 5 ist cmp
, während Perl 6 ist cmp
schlauer ist und werden Zahlen wie <=>
und Strings wie leg
vergleichen.
13 leg 4 # -1, because 1 is smaller than 4, and leg converts to string
13 cmp 4 # +1, because both are numbers, so use numeric comparison.
Schließlich ~~
ist das "smart match", es beantwortet die Frage "tut $x
Spiel $y
". Wenn $y
ein Typ ist, wird der Typ überprüft. Wenn $y
eine Regex ist, ist es Regex-Übereinstimmung - und so weiter.
Wissen Sie, dass ... '' ist auch ein gültiger Operator? –
Warum gibt es Angst vor Komplexität? Sie müssen nicht alle Funktionen verwenden. JUST lerne, was du brauchst. – Aftershock