Wenn Sie nichts tun Schleifen mit mehreren break
Aussagen, dann das einzige Problem hier ist, dass C (aus offensichtlichen Gründen) Sie nicht aus einem bloßen Block ausbrechen lassen, daher die "Non-Loop", die einige ahnungsloser zukünftiger Betreuer könnte Fehler für eine echte Schleife machen.
Die Überlegungen, glaube ich, sind:
- wenn es nur zwei
break
Punkte sind, was ist so schlecht über zwei if
Aussagen?
- Wenn es mehr als zwei Haltepunkte gibt, dann kann der Eindruck mit
if
Anweisungen unangenehm werden, und das spart das, aber dann wieder ist die Funktion zu viel? Und selbst wenn nicht, wäre es besser, einfach goto
zu verwenden und die Verrücktheit einer Schleife zu vermeiden, die keine Schleife macht?
Da Sie diese sprachunabhängig Tag, habe ich eine macroised Assemblersprache zu bedienen, mit einem block
... endblock
, die Sie aus brechen könnte. Dies führte zu ziemlich nett Code für die notwendigen Bedingungen überprüft, wie zB:
block
breakif str1 == null
breakif str2 == null
get some combined property of str1 and str2
breakif some other condition that stops us getting on with it
get on with it
endblock
Eigentlich war es nicht breakif str1 == null
, war es breakifeq.p str1, null
, oder so etwas, aber ich vergesse genau das, was.
In "etwas anderes". Wie genau sollen wir das beurteilen, wenn Sie nicht "etwas anderes" definiert haben? –
Ich würde sagen, das ist nicht besser, als ein "Goto" -Label vor "irgendeinem endgültigen Code" zu setzen und es zu bekommen; zumindest mit goto ist das Label explizit. Dieser Code ist nur irgendwie komisch. –
@ sje397 das mag wie eine Schleife aussehen, aber es ist nicht. Siehe Schleifenbedingung. – robert