![]() |
AW: case .. of kann kein break - Gibt es dafür einen rationalen Grund?
Zitat:
|
AW: case .. of kann kein break - Gibt es dafür einen rationalen Grund?
Zitat:
Aber ja, es gibt dann versciedene Pfade. Die gibt es durch if then else, case usw. auch schon. Und ja, "break" ist in Pascal für Schleifen da. Vermutlich sollte ich im C-Formum mal danach fragen. Zitat:
Na gut, wenn ich innerhalb einer Methode extra Scopes mit begin ... end aufmache, dann verlässt ein Exit immer noch die ganze Methode. Du stimmst mir hoffentlich zu, das innerhalb eines cases auch ein "Scope" existiert. Klar kann ich da auch mit Exit; raus. Zitat:
Die meisten Erklärungen bis jetzt sind aber nur persönliche Befindlichkeiten oder Abneigungen, aber bis jetzt kein echter Informatik-lastiger Grund, wieso ein frühzeitiger Abbruch eines case ... of Scopes irgendwie schädlich sein könne. Der Beweis wäre das es mit goto geht, wahrscheinlich muss ich bei den Gründen nach den Abneigungen gegen goto suchen (Spagetti-Code). :stupid: |
AW: case .. of kann kein break - Gibt es dafür einen rationalen Grund?
Nochmal zusammengefasst:
|
AW: case .. of kann kein break - Gibt es dafür einen rationalen Grund?
Zitat:
Wie schon gesagt, ich bin mit der Definition ein break bricht die innerste Schleife im Scope ab ganz zufrieden. Alles darüber hinaus wäre nicht nur schwerer zu durchschauen, sondern kann auch bei einer simplen Änderung des Codes völlig anders verlaufen (z.B. wenn man das
Delphi-Quellcode:
mit einem weiteren case-Konstrukt oder einer Schleife umschließt). Das ist ja schon jetzt bei Schleifen zu beachten. Ohne eine syntaktische Möglichkeit den zu verlassenden Scope anzugeben wäre das nur sehr schwer zu warten.
if not Condition then...
|
AW: case .. of kann kein break - Gibt es dafür einen rationalen Grund?
Zitat:
Delphi-Quellcode:
Erstmal kein Break notwendig,
if MyCondition then
begin Mache2; end; erspart auch gleich die unnötige Negierung und man erkennt sofort, dass es eigentlich identisch mit Two ist. :stupid: |
AW: case .. of kann kein break - Gibt es dafür einen rationalen Grund?
Man könnte vielleicht mal einen Feature-Request stellen, für ein neues CASE, welches c-iger arbeitet,
also ohne Implizites und dafür optional mit manuellen BREAKs. |
AW: case .. of kann kein break - Gibt es dafür einen rationalen Grund?
Ich glaube die lachen dich dann für den Feature Request aus. Komplett unnötig.
|
AW: case .. of kann kein break - Gibt es dafür einen rationalen Grund?
Rollo62 warum kann ich den Scope von einer IF THEN Anweisung nicht mit break verlassen?
WAAAAARUMMMM?
Delphi-Quellcode:
For var i:integer := low(Werte) to High(Werte) do Begin case Werte[i] of TWert.wGut: DoWert_gut; TWert.wSchlecht: DoWert_schlecht; TWert.wVerseucht: Begin Showmessage('Alles unbraucbar!'); break; //Welches verhalten erwartest du hier? end; else DoWert_unspezifisch; end; end |
AW: case .. of kann kein break - Gibt es dafür einen rationalen Grund?
Die Lehre der
![]() |
AW: case .. of kann kein break - Gibt es dafür einen rationalen Grund?
Zitat:
Oder besser gesagt, dass break wäre in diesem Fall IMMER für das case .. of zuständig, und nicht für die außenliegende Schleife. Ok, zumindest könnte man sagen, dass dies ein halbwegs plausibler Grund gegen break im case wäre. Man könnte aber auch so argumentieren:
Delphi-Quellcode:
case LMyVariable of
TMyVariable.One: X := 1; //<= HIER ist de facto ein "BREAK", Ende des case statements TMyVariable.ThreeBlue: begin Mache1; if not MyCondition then begin break; //<= HIER soll es kein "BREAK", Ende des case statements geben end; Mache2; end; //<= HIER ist de facto ein "BREAK", Ende des case statements end; Zitat:
Ich möchte nur die Gründe kennen, die dagegen sprechen. Da hätte ich an Pfade oder Sprungoptimierungen gedacht, aber es scheint nur philosophische Gründe dagegen zu sprechen. Eingeschlossen, wie oben, dass ein break dann das break einer außenliegenden Schleife wegnehmen würde. Ok, ok, belassen wir es dabei. Ich brauche keine alternativen Vorschläge dazu, ich hatte ja schon erklärt, dass ich gerne Guards einsetze, statt tiefverschachtelter, unübersichtlicher if-then-else. Wahrscheinlich macht es dann sowieso Sinn statt "begin end;" im case zu haben, besser eine spezifische Case-Funktion aufzurufen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz