Deklarieren Sie mehrere Variablen in einer Zeile in Perl

10

Ich habe festgestellt, dass ich zwei Variablen in einer Anweisung deklarieren kann:

%Vor%

Aber ich denke, dass diese Syntax verwirrend sein kann, wenn wir zum Beispiel fünf Variablendeklarationen hätten, wäre es schwierig zu sehen, welcher Wert zu welcher Variablen gehört. Also ich denke, es wäre besser, wenn wir diese Syntax verwenden könnten:

%Vor%

Ich frage mich, warum diese Art von Erklärung in Perl nicht möglich ist? Und gibt es Alternativen?

(Ich versuche zu vermeiden, my für jede Deklaration zu wiederholen wie: my $a=1; my $b=2; )

    
Håkon Hægland 12.04.2014, 14:35
quelle

4 Antworten

12

Nein. Variablen, die von my deklariert wurden, werden nur benannt, wenn die nächste Anweisung beginnt. Sie können der neu erstellten Variablen nur dann zuweisen, wenn Sie sie der zurückgegebenen Variablen zuweisen. Denken Sie an my als new , das auch deklariert.

Wie für Ihren speziellen Code,

%Vor%

bedeutet

%Vor%

Offensichtlich, nicht gut.

Wenn Sie Variablen verwendet hätten, die nicht bereits deklariert wurden [1] , hätten Sie einen strikten Fehler erhalten.

  1. $a und $b sind in jedem Namespace vordefiniert, um die Verwendung von sort zu ermöglichen.
ikegami 12.04.2014, 14:49
quelle
14

Ich bin neu bei Perl, aber ich werde dir sagen, was ich bisher gelernt habe.

Ich werde dazu übergehen, $start und $end anstelle von $a und $b zu verwenden, weil $a und $b spezielle Variablen sind, die immer deklariert werden.

Um Ihre ursprüngliche Frage zu beantworten, können Sie mehrere Variablen in einer einzelnen Zeile deklarieren und zuweisen:

%Vor%

Persönlich finde ich das über die gleiche Typisierung und weniger klar als über jeweils eine separate Zeile:

%Vor%

Ich denke jedoch, dass es nützlich ist, Subroutinen-Parametern benannten Variablen zuzuweisen, weil die Subroutinen-Parameter in einer Liste namens @_ :

stehen %Vor%

Sie können in der Dokumentation noch einige Besonderheiten der my -Anweisung sehen, einschließlich einer Möglichkeit, sie zu ignorieren einige der Werte in der Liste.

    
Don Kirkby 10.09.2014 17:16
quelle
4

Unten ist die Methode, um mehrere Variablen in einer Zeile in Perl zu deklarieren:

mein ($ tag, $ mon, $ jahr, $ hr, $ min, $ sek) = (0) x 6;

Hier wurden alle obigen Variablen mit 0 initialisiert. Der Wiederholungsoperator 'x' wird verwendet.

    
Abhishek Verma 24.03.2017 05:38
quelle
-1

Um Verwirrung in diesen Fällen zu vermeiden, könnte man das normalerweise so machen:

%Vor%

Nach dem KISS-Prinzip .

Ikegami stellt fest, die Alternative wäre:

%Vor%     
Filippo Lauria 12.04.2014 14:59
quelle

Tags und Links