Manche Funktionen funktionieren ja nur einmal (z.B. Puffer auslesen), aber nach der Prüfung will man ggf. was mit dem Rückgabewert anfangen. Gibt's da ne schönere Methode als: t = f(); if (t) {...}
Das kommt darauf an, wie Du den Rückgabewert weiter auswerten möchtest!
1 | t = f(); |
2 | if (t) { |
3 | }
|
Die Alternative von Robert bietet sich nur an, wenn Du den Wert genau einmal überprüfen möchtest. Wirf vielleicht mal einen Blick auf die swtich/case-Anweisung:
1 | switch (f()) { |
2 | case 1: ...;break; //wenn f()==1 ... |
3 | case 2: ...;break; //wenn f()==2 ... |
4 | default: ...; //ansonsten ... |
5 | }
|
Generell ist die Lösung, den Rückgabewert in einer Variable zu speichern aber nicht schlecht. Gruß, Peter
Ups, irgendwie habe ich Deinen Beispielcode mit in meinen Post übernommen, der sollte natürlich nicht mehr drinstehen :)
1 | if(t = f()) { |
2 | print(t); |
3 | }
|
...wird immer wahr sein. Eher:
1 | if(t == f()) { |
2 | print(t); |
3 | }
|
Stefan C. schrieb:
>
1 | > if(t = f()) { |
2 | > print(t); |
3 | > } |
4 | >
|
> > ...wird immer wahr sein. Nein, wird dann wahr sein, wenn der Rückgabewert von f() wahr ist. > Eher: >
1 | > if(t == f()) { |
2 | > print(t); |
3 | > } |
4 | >
|
Nein, wird nur dann wahr sein, wenn t gleich dem Rückgabewert von f() ist.
Ich schreib in solchen Fällen gerne explizit
1 | if ((t = f()) != 0) { |
2 | mach_was_mit(t); |
3 | }
|
Dann weiß ich auch noch, wenn ich ein halbes Jahr später im Code irgendeinen Fehler suche, dass das '=' statt '==' im 'if' Absicht war.
Jo, aber ich wollts knackig halten. Lesbar ist was anderes, da hast du schon Recht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.