Der Betreiber =>
(dick Komma) in Perl
Der Betreiber =>
wird verwendet, um die Werte einzugrenzen. Es wird am häufigsten verwendet
bei der Beschreibung der Perl-Hash. Hier ist ein Beispiel:
▶ Run
my %h = (
a => 1,
b => 2,
);
Der Betreiber =>
ist eine syntaktische Zucker. Dieser Operator wird das Komma anstelle des operators ,
,
aber im Gegensatz zu den Komma-Operator, er nimmt den linken Operanden als String, ohne die Notwendigkeit, Ihre
in Anführungszeichen. Hier ist eine ganz ähnliche Beschreibung Perl Hash, aber mit einem Komma:
▶ Run
my %h = (
'a', 1,
'b', 2,
);
Bei der Beschreibung der Hash ist immer besser, die Betreiber =>
zur Trennung von Schlüssel-Wert -
da bei dieser Anwendung ist ein grafisches Code.
Komma anstelle des operators ,
immer kann der Betreiber =>
(aber nicht Umgekehrt). Aber nicht immer so
lohnt sich zu tun. Hier ist noch eine Beschreibung von Hash, die funktioniert genauso wie die beiden vorherigen, aber so nicht zu tun
es ist notwendig:
▶ Run
my %h = (
a => 1 =>
b => 2 =>
);
Der Betreiber =>
wird oft als "dick Komma", weil er wirkt wie ein Komma (mit einer Ergänzung),
sondern besteht aus zwei Zeichen anstelle von einem.
Der linke operand
Der Betreiber =>
denkt String Linker operand nur, wenn folgende Bedingungen erfüllt sind:
- der linke operand beginnt mit einem Buchstaben oder mit dem Zeichen
_
- und der linke operand besteht nur aus Buchstaben, Ziffern und Zeichen
_
Also hier ist ein Code, funktioniert nicht (aufgrund der Tatsache, dass in der linken Operanden ein Symbol -
):
▶ Run
my %h = (
some-key => 3,
);
Müssen Sie explizit schließen some-key
in Anführungszeichen: 'some-key'
.
Verwendung nicht in хешах
Der Betreiber =>
in Erster Linie lohnt sich der Einsatz für die Beschreibungen von Wertepaaren in хеше. Er sieht aus wie
Pfeil und bei der Verwendung in хеше es sieht sehr organisch — Schlüssel weist auf die Bedeutung. Aber der Betreiber =>
Sie können nicht nur in хешах, aber in der Regel in allen Listen (aber nicht immer macht das Sinn).
Hier ist ein Beispiel für die Verwendung dieses operators in einem array:
▶ Run
my @arr = ( one => two => 'three' );
In diesem Beispiel wurde ein array in dem sich 3 Zeilen. Da wurde der Betreiber =>
,
ist der linke operand kann nicht in Anführungszeichen eingeschlossen werden. Also die ersten beiden Zeilen ohne Anführungszeichen verwendet werden.
Auf die Rechte operand diese Magie nicht gilt, so musste die Dritte Zeile in Anführungszeichen gesetzt werden.
Dieses Beispiel wäre besser zu schreiben über den qw
:
▶ Run
my @arr = qw(one two three);
Der Betreiber muss zusammen schreiben
Der Betreiber =>
besteht aus zwei Zeichen und diese zwei Symbole müssen neben einander. Darf nicht
die Lücke zwischen Ihnen. In diesem Fall schreiben wenn = >
, dann wird der Fehler. Hier ist ein Beispiel des falschen Codes:
▶ Run
my %h = (
a = > 1,
);
Wenn Sie diesen Code ausführen, dann erscheint auf dem Bildschirm:
syntax error at script.pl line 4, near "= >"
Execution of script.pl aborted due to compilation errors.
Die offizielle Dokumentation
Hier ist ein Ausschnitt der Ausgabe des Befehls perldoc perlop
pro Operator =>
:
The "=>" operator (sometimes pronounced "fat comma") is a synonym for the
comma except that it causes a word on its left to be interpreted as a
string if it begins with a letter or underscore and is composed only of
letters, digits and underscores. This includes operands that might
otherwise be interpreted as operators, constants, single number v-strings
or function calls. If in doubt about this behavior, the left operand can
be quoted explicitly.
Otherwise, the "=>" operator behaves exactly as the comma operator or list
argument separator, according to context.
For example:
use constant FOO => "something";
my %h = ( FOO => 23 );
is equivalent to:
my %h = ("FOO", 23);
It is NOT:
my %h = ("something", 23);
The "=>" operator is helpful in documenting the correspondence between
keys and values in hashes, and other paired elements in lists.
%hash = ( $key => $value );
login( $username => $password );
The special quoting behavior ignores precedence, and hence may apply to
part of the left operand:
print time.shift => "bbb";
That example prints something like "1314363215shiftbbb", because the "=>"
implicitly quotes the "shift" immediately on its left, ignoring the fact
that "time.shift" is the entire left operand.
Andere Artikel
Some parts of this page were machine translated.
Powered by Yandex.Translate
http://translate.yandex.com/