Fall-Through-Schalter zum Ausführen einer Abfolge von Schritten


9

Mein Programm muss eine Abfolge von Schritten von Anfang bis Ende ausführen. Aufgrund unterschiedlicher Eingaben variiert der Startpunkt jedoch, z. B. laufen einige vom ersten bis zum Ende, andere vom zweiten bis zum Ende, andere vom dritten bis zum Ende usw.

Ich brauche nur ein einfaches Design, derzeit verwende ich einen Fall-Through-Schalter wie folgt:

switch (step) {
case 1:
     //do the 1st step
     //fall through, so no break here
case 2:
    //do the 2nd step
    //fall through
case 3:
    //do the 3rd step
    //fall through
...
}

Es funktioniert, aber der Fall-Through-Code macht mich immer unbehaglich. Gibt es einen besseren und einfacheren Weg, dies zu tun?


1
Du solltest nicht überqueren. Ich glaube, Ihre Frage ist auf dieser Website sinnvoll. Wenn ich Sie wäre, würde ich die Frage zu Stack Overflow löschen.
Vincent Savard

1
OK, ich habe es auf SO gelöscht und meine Frage auch hier aktualisiert. Vielen Dank.
Qiulang

Sind die für jeden Schritt erforderlichen Daten gleich? Können Sie jeden Schritt mit denselben Argumenten und demselben Rückgabetyp in eine eigene Funktion extrahieren?
Greg Burghardt

Nein, deshalb trifft die Array-Lösung möglicherweise nicht auf meinen Fall zu
Qiulang,

Antworten:


4

Abhängig von der verwendeten Sprache können Sie eine Reihe von Funktionen erstellen und stepals Ausgangspunkt für das Durchlaufen dieser Funktionen verwenden. Etwas wie:

var functions = function[]
{
    step1,
    step2,
    step3,
    …
}

foreach (var index = step-1; index <= function.count; index++)
{
    functions[index]();
}

Vielen Dank, derzeit verwende ich Javascript, aber ich denke, Ihre Lösung gilt auch für c / c ++. Vielen Dank!
Qiulang

Dies wäre die ideale Lösung, solange die Ein- und Ausgabe jeder Funktion gleich ist.
Greg Burghardt

4

Die Art und Weise, wie Sie es tun, ist vollkommen gut und einfach; es ist das, wofür Fallthrough in erster Linie ist. Wenn Sie sich dadurch wohler fühlen, können Sie einen Kommentar hinzufügen, in dem erklärt wird, was Sie tun (damit jemand anderes keine halbe Stunde braucht, um zu verstehen, warum dies so ist).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.