2017-02-27 2 views
-3

I unten Ausdruck haben in Perl

@var1 = [($a, $b)] 

Kann mir jemand helfen, den Wert in var1 gespeichert Ehrerbietung.

+0

Nun, welche? – yonyon100

+0

Warum haben Sie an erster Stelle eine Array-Referenz einem Array zugewiesen? – Borodin

Antwort

1

@ var1 ist ein Array eines Arrays. Daher ist sein einziger Inhalt ein anderes Array, das zwei Werte $ a und $ b enthält.

$a2 = $var1[0][0]; 
$b2 = $var1[0][1]; 
4

@var1 ist ein Array mit einem einzelnen Element. Dieses einzelne Element ($var[0]) enthält einen Verweis auf ein anderes Array. Dieses referenzierte Array hat zwei Elemente, die die Werte der Variablen $a und $b enthalten.

So $var[0] enthält eine Array-Referenz. Um von einem Array-Verweis auf die Elemente des referenzierten Arrays zu gelangen, verwenden wir den Nachschlagepfeil ->.

print $var[0]->[0]; # The first element in the referenced array 
print $var[0]->[1]; # The second element in the referenced array 

Es gibt eine zusätzliche Syntax, die wir hier verwenden können. Wenn wir zwei Sätze von Nachschlage-Klammern haben, die nur durch einen Nachschlage-Pfeil getrennt sind, können wir diesen Pfeil weglassen. So werden die Ausdrücke.

print $var[0][0]; 
print $var[0][1]; 

Zwei Punkte über Ihren Code:

  • $a und $b sind spezielle Variablen, die in Sortier Subroutinen verwendet werden. Es ist eine schlechte Idee, sie irgendwo anders zu verwenden.
  • In Ihrem ursprünglichen Zuweisungsausdruck (@var1 = [($a, $b)]) sind die Klammern nicht erforderlich. Nur @var1 = [$a, $b] hätte das Gleiche gemacht.
+1

Ich begann meine Antwort mit im Grunde den gleichen ersten Satz ... :) – simbabque

+0

Ich würde gerne wissen, warum diese Antwort ein paar downvotes erhalten hat. –

Verwandte Themen