Beim Versuch, Programmcode zu debuggen, stieß ich auf Folgendes:
(base) hsmyers@BigIron:~$ rlwrap -A raku
To exit type 'exit' or '^D'
> my regex N { <[A..G]> };
regex N { <[A..G]> }
> my %h = A => 1, B => 2;
{A => 1, B => 2}
> 'B' ∈ %h.keys
True
> my $m = 'B' ~~ / <N> /;
「B」
N => 「B」
> $m ∈ %h.keys
False
> $m.Str ∈ %h.keys
True
> my $n = $m.Str
B
> $n ∈ %h.keys
True
> %h<B>:exists
True
> %h<$n>:exists
False
>
Zusammenfassend stellt sich die Frage, wie Sie vom Übereinstimmungsobjekt zum String wechseln, sodass% Whatever: exist funktioniert. 'Element of Keys' bietet eine Problemumgehung, aber ich glaube, dass dies nicht der richtige Weg ist, um die Existenz von Schlüsseln zu überprüfen?
<a b c>
ist eine Abkürzung fürqw<a b c>
.Welches wird als enden
'a', 'b', 'c'
Der Zugriff auf einen Hash per Schlüssel erfolgt mit
{}
Welches wäre schöner zu schreiben als:
Was noch schöner wäre, ist das loszuwerden
{}
Deshalb ist das eine gültige Raku-Syntax.
Also, wenn Sie dies schreiben:
Es ist im Grunde das gleiche wie:
Wenn Sie nur auf ein Element zugreifen und es kein Leerzeichen hat.
Anstatt dies die ganze Zeit zu tun:
Es ist viel einfacher, nur zu verwenden:
Aus diesem Grund wird in der gesamten Dokumentation dieses Formular verwendet.
Ebenso sind diese auch gleich:
Wenn Sie also sehen, dass
$<abc>
es wirklich nach$/
dem Wert sucht, der dem Schlüssel zugeordnet istabc
.In Raku wird viel Syntax wiederverwendet.
<>
ist ein solcher Fall.Hinweis:
Sie müssen nicht
.keys
auf einem Hash mit verwenden∈
.(Da Raku unterschiedliche Operatoren für unterschiedliche Operationen verwendet, ist es selten, dass Sie eine solche Datenmassage durchführen müssen.)
quelle