Thread Switch Syntax Fehler? (6 answers)
Opened by jgeier at 2009-05-30 21:13

sid burn
 2009-05-30 23:09
#122118 #122118
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
2009-05-30T20:23:43 jgeier
Hallo sid burn,
das mit mit dem SWITCH hash ist echt tricky und funktioniert auch.

Klar funktioniert es. ;)

Quote
Aber ich habe da doch eine Verständnis Frage.
Was bedeutet in folgendem Ausdruck:
my $ferg = $switch{$ftest}->()
das ->() ?

In dem hash werden Subroutinen gespeichert. Mit $switch{$ftest} holst du die entsprechende subroutine heraus. Da es aber letztendlich nur eine Referenz auf eine Subroutine ist, muss du mit dem pfeil "->" dereferenzieren. Und um die Funktion aufzurufen musst du dann leere Klammern hinten anhängen ()"

Ist das gleiche wie bei einen normalen Funktionsaufruf wie print("hallo")

Nur da du dereferenzieren musst kannst du die klammern halt nicht weg lassen.

Der einzige hacken ist wenn du ein Default wert anbieten musst. Dann musst du praktisch vorher prüfen ob der key überhaupt existiert und wenn nicht etwas anderes ausführen. Also z.B. so.

Code (perl): (dl )
1
2
3
4
5
6
if ( exists $switch{$key} ) {
    $switch{$key}->()
}
else {
    # hier der code für default
}
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de

View full thread Switch Syntax Fehler?