Schrift
[thread]6470[/thread]

if else contra ?:



<< |< 1 2 >| >> 19 Einträge, 2 Seiten
Crian
 2004-08-06 14:27
#85550 #85550
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Ich weiß, if und else ist leserlicher als ?:, aber manchmal ist letzteres übersichtlicher.

Ich habe mal gehört, intern würde jedes if-else in ?: umgewandelt werden.

Beim Versuch dies nachzubauen bin ich allerdings gerade gescheitert, mag an der Hitze liegen...

Also sowas wie

Code: (dl )
1
2
3
4
5
6
if (Bedingung) {
Block 1
}
else {
Block 2
}


=>

?

Es gibt doch dieses schöne deparse-Modul, wie heißt das nochmal? Meine Versuche dahingehend in die Perlschen Interna zu blicken schlugen fehl, entweder ist das Modul in der Stadnarddistri nicht dabei oder ich hab den Namen falsch erinnert oder beides ;)
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
pq
 2004-08-06 15:23
#85551 #85551
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
hmm, wo hast du denn das gelesen?
B::Deparse zeigt das jedenfalls nicht an:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$ perl -MO=Deparse -wle'
$x = 1;
if ($x) {
print 1
}
else {
print 0
}'
BEGIN { $^W = 1; }
BEGIN { $/ = "\n"; $\ = "\n"; }
$x = 1;
if ($x) {
print 1;
}
else {
print 0;
}
-e syntax OK
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
 2004-08-06 15:30
#85552 #85552
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
Wenn's unbedingt Blöcke sein sollen:
Code: (dl )
(Bedingung) ? do{Block 1} : do{Block 2};


Ich nehme ? gern bei sowas:
Code: (dl )
1
2
3
4
5
my $familie = (
 Mutti => 40,
 Vati => 41,
 (@kinder ? map(($->{NAME} => $_->{ALTER}), @kinder) : ()),
);
\n\n

<!--EDIT|steffenw|1091792141-->
$SIG{USER} = sub {love 'Perl' or die};
kabel
 2004-08-06 15:44
#85553 #85553
User since
2003-08-04
704 Artikel
BenutzerIn
[default_avatar]
der unterschied zwsichen if/else und ?: ist, dass letzteres ein ausdruck ist, also einen wert hat.
$x = if () ... {} ist dagegen sinnfrei.

EDIT: typo\n\n

<!--EDIT|kabel|1091792696-->
-- stefan
Crian
 2004-08-06 16:17
#85554 #85554
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
stimmt, dass muss ich irgendwie verwechseln, vielen Dank für Eure Ausführungen. Dann muss ich mich jedenfalls auch nicht wundern, es nicht (ohne die do's) hinzubekommen.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Ishka
 2004-08-06 17:27
#85555 #85555
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
ich finde es ist nicht eine Lösung besser, sondern manchmal die eine und manchmal die andere. Perl bietet halte mehrere Lösungen.
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}
betterworld
 2004-08-06 23:04
#85556 #85556
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
Ich finde es eigentlich dumm, dass if kein Ausdruck ist. Wenn es so waere, waeren beide Konstrukte gleichberechtigt, was einem mehr Freiheit beim Code-Design liesse.
Im Uebrigen ist if in Ruby ein Ausdruck.
Code: (dl )
1
2
$ ruby -e 'puts (if 3==7; then "komisch"; else "richtig"; end)'
richtig
esskar
 2004-08-06 23:07
#85557 #85557
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
und was liefert dann

Code: (dl )
'puts (if 3==7; then "komisch"; end)'


?
betterworld
 2004-08-06 23:17
#85558 #85558
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
nil
steffenw
 2004-08-06 23:44
#85559 #85559
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=betterworld,06.08.2004, 21:04]Ich finde es eigentlich dumm, dass if kein Ausdruck ist.[/quote]
Dann würde aber
Code: (dl )
print 'gefüllt' if @array;
nicht funktionieren können. Und das wäre traurig^3.\n\n

<!--EDIT|steffenw|1091821541-->
$SIG{USER} = sub {love 'Perl' or die};
<< |< 1 2 >| >> 19 Einträge, 2 Seiten



View all threads created 2004-08-06 14:27.