Ich sehe das Schlüsselwort "my" immer wieder vor Variablennamen in Beispiel-Perl-Skripten online, aber ich habe keine Ahnung, was es bedeutet. Ich habe versucht, die Handbuchseiten und andere Websites online zu lesen, aber ich habe Schwierigkeiten zu erkennen, wofür sie gedacht sind, da ich einen Unterschied zwischen der Verwendung und dem Handbuch sehe.
In diesem Beitrag wird beispielsweise die Länge des Arrays ermittelt: Ermitteln der Größe eines Arrays in Perl
Aber das Handbuch sagt:
A my deklariert die aufgelisteten Variablen als lokal (lexikalisch) für den umschließenden Block, die Datei oder die Auswertung. Wenn mehr als ein Wert aufgeführt ist, muss die Liste in Klammern gesetzt werden.
Was macht es und wie wird es verwendet?
perl
scope
declaration
Faust der Wut
quelle
quelle
my
hat es nicht im geringsten berücksichtigt. Es ist der Skalarzuweisungsoperator (=
), der den Skalarkontext erzwungen hat@arr
.Antworten:
my
schränkt den Umfang einer Variablen ein. Der Umfang einer Variablen ist dort, wo sie sichtbar ist. Die Reduzierung des Gültigkeitsbereichs einer Variablen auf den Ort, an dem die Variable benötigt wird, ist ein grundlegender Aspekt einer guten Programmierung. Dies macht den Code lesbarer und weniger fehleranfällig und führt zu einer Reihe abgeleiteter Vorteile.Wenn Sie eine Variable nicht mit deklarieren
my
, wird stattdessen eine globale Variable erstellt. Dies ist zu vermeiden. Mit usinguse strict;
Perl möchten Sie verhindert werden, dass implizit globale Variablen erstellt werden. Deshalb sollten Sie in Ihren Programmen immeruse strict;
(unduse warnings;
) verwenden.Verwandte Lektüre: Warum verwenden
use strict;
unduse warnings;
?quelle
var
undlet
in JavaScript. Ohne'use strict';
JS können Sie neue globale Variablen ohne eines der Schlüsselwörter deklarieren, was nicht als bewährte Methode angesehen wird.let
undvar
macht und wie sollten sie verwendet werden?" Und ja, die Antwort wäre ungefähr dieselbe. (let
my
let
use strict;
? Aber das war nicht die Frage unduse strict;
macht mehr als das. Oder vielleicht gemeint Sie , dass die Kommunikationmy
Grenzen der Umfang von Vars irgendwie wielet
undvar
tun, aber das ist so ziemlich der erste Satz der Antwort. 3) Wenn Sie eine Frage anders beantworten möchten, sind Antworten dafür gedacht.Kurzzusammenfassung:
my
Erstellt eine neue Variable undlocal
ändert vorübergehend den Wert einer VariablenIm folgenden Beispiel bezieht sich $ :: a auf $ a im 'globalen' Namespace.
dh,
local
ändert vorübergehend den Wert der Variablen, jedoch nur innerhalb des Bereichs, in dem sie vorhanden ist.Quelle: http://www.perlmonks.org/?node_id=94007
Aktualisieren
Über den Unterschied zwischen
our
undmy
bitte sehen(Dank ThisSuitIsBlackNot ).
quelle
their
?our
: stackoverflow.com/questions/845060/…Private Variablen über my () ist die Hauptdokumentation für
my
.In dem von Ihnen erwähnten Beispiel für die Arraygröße wird die Größe des Arrays nicht ermittelt. Es wird verwendet, um eine neue Variable zu erstellen, die die Größe des Arrays enthält.
quelle