Schrift
[thread]7738[/thread]

Ternärer Operator: ?: (Seite 2)

Leser: 3


<< |< 1 2 >| >> 14 Einträge, 2 Seiten
ptk
 2006-02-25 12:42
#63291 #63291
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=renee,25.02.2006, 08:14]Dein Beispiel finde ich z.B. nicht so toll, da man bei einer Codedurchsicht das leicht uebersehen kann. Da finde ich ein
Code: (dl )
1
2
3
4
5
6
7
8
my %hash = (
          key1 => 'value1',
          key3 => 'value3',
       );

if($flag){
 $hash{key2} = 'value2';
}


viel besser lesbar (und wartbar)...[/quote]
Mit geschickten Einrückungen lässt suich das vermeiden. Zum Beispiel so (außer dass der Dillo kein Monospace-Font im Forum anzeigt und ich nicht weiß, ob es korrekt aussieht)
Code: (dl )
1
2
3
4
5
%hash= (
  key1 => 'value1',
 $flag ? (key2 => 'value2') : (),
  key3 => 'value3',
);
pq
 2006-02-25 14:40
#63292 #63292
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=ptk,25.02.2006, 11:42][quote=renee,25.02.2006, 08:14]Dein Beispiel finde ich z.B. nicht so toll, da man bei einer Codedurchsicht das leicht uebersehen kann.[/quote]
Mit geschickten Einrückungen lässt suich das vermeiden.
[/quote]
schon allein mit einem editor mit syntax-highlighting lässt sich sowas
recht einfach erkennen. hash-keys haben eine andere farbe als variablen.
von daher kein argument gegen den operator in diesem fall, ich benutze
das auch sehr gerne.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
steffenw
 2006-02-25 16:04
#63293 #63293
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=renee,25.02.2006, 08:14]Dein Beispiel finde ich z.B. nicht so toll, da man bei einer Codedurchsicht das leicht uebersehen kann. Da finde ich ein
Code: (dl )
1
2
3
4
5
6
7
8
my %hash = (
          key1 => 'value1',
          key3 => 'value3',
       );

if($flag){
 $hash{key2} = 'value2';
}


viel besser lesbar (und wartbar)...[/quote]
Sonst rücke ich sowas auch ein.
Bei einenm Hash ist es egal, bei einem Array nicht, die auseinandergefetzte Schreibweise @renee, läßt nur schwer erkennen, in welcher Reihenfolge die Arrayelemente dann überhaupt im Array vorkommen. Wenn man dann noch per if, mit unshift und push elemente mal hier nd mal da anfügt, dann ist das chaos perfekt.
$SIG{USER} = sub {love 'Perl' or die};
betterworld
 2006-02-25 21:42
#63294 #63294
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
[quote=ptk,24.02.2006, 22:31]Nicht ganz, bei ? : wird ein Rückgabewert geliefert, bei if ... nicht.[/quote]
"if" hat gewissermaßen schon einen Rueckgabewert, wie man an dem folgenden Code sieht. Der Unterschied ist, dass "?:" ein Ausdruck ist und if nicht.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
print "$_\n" for map {
if (( "." x $_ ) !~ /^(..+)\1+$/) {
if ( $_ & 1 ) {
"Ungerade Primzahl: $_"
} else {
"Gerade Primzahl: $_"
}
} else {
"Keine Primzahl: $_"
}
} 2 .. 10;
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2006-02-24 19:43.