Thread abgedrehtes problem mit switch: oder bin ich blind? (71 answers)
Opened by deepblack at 2004-06-16 21:56

ptk
 2004-06-17 00:19
#83434 #83434
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=deepblack,16.06.2004, 20:28]ok und lösung?
einfach auf switch verzichten und lieber if nehmen? oder irgendwas was eleganter ist?[/quote]
1. Bug (falls es einer ist!) einkreisen und einen Report an Damian Conway und/oder die Perl5-Porters schicken.
2. switch durch if ersetzen, auch wenn es nicht ganz so schoen aussieht. Oder in einfachen Faellen ein Hash mit Code-Referenzen verwenden:
Code: (dl )
1
2
3
4
{
'c' => sub { ... mach was fuer c ... },
'q' => sub { &disconnect_db; print $clear; exit(); },
}->{$choice}->();

Oder man nimmt den folgenden Trick, um eine if-elsif-Kette etwas ruhiger aussehen zu lassen (man beachte, dass alle Bedinungen auf der gleichen Spalte beginnen):
Code: (dl )
1
2
3
4
5
6
7
8
9
if      ($choice eq 'c') {
...
} elsif ($choice eq 'q') {
...
} elsif ($choice eq 'x') {
...
} else {
...
}
Um etwas Tipparbeit zu sparen, kann man ein
Code: (dl )
local $_ = $choice
am Anfang einfuegen und dann mit $_ arbeiten.
3. Auf perl6 warten, da gibt es ein richtiges switch.

View full thread abgedrehtes problem mit switch: oder bin ich blind?