Gleich wie if-Anweisungen, die Ihrem Programm die Fähigkeit geben, Entscheidungen zu treffen, können switch-Anweisungen verwendet werden, um ein bisschen Intelligenz in jedes Programm zu bringen. Tatsächlich ist eine switch-Anweisung im Wesentlichen eine spezialisierte Version einer if-Anweisung, die sonst eine übermäßige Anzahl von Anweisungen des Typs ELSE IF enthalten würde.

Lassen Sie uns einen Blick darauf werfen, warum sie verwendet werden.

Manchmal, wenn Sie Logik in Ihre Programme einbauen, werden Sie auf eine Situation stoßen, in der Sie angesichts des Wertes eines bestimmten Datensatzes etwas anderes tun wollen. Normalerweise könnte man das mit einer if-Anweisung abdecken, aber was ist, wenn man 5, 10 oder sogar 20 mögliche Situationen berücksichtigen will?

Bei der Verwendung einer if-Anweisung würde Ihr Programm schnell zu einem Wirrwarr von if-Anweisungssyntax werden, und es wäre nicht sehr lesbar oder klar, was vor sich geht. Programmierer erkannten dies und so wurden Switch-Anweisungen geboren!

Struktur von Switch-Anweisungen

Eine Switch-Anweisung nimmt einen einzelnen Wert und vergleicht ihn dann mit einer Reihe anderer Werte unter Verwendung eines booleschen Ausdrucks. Wenn einer dieser booleschen Ausdrücke wahr ist, wird ein bestimmtes Stück Code ausgeführt.

Mit dieser Struktur können Sie auf einfache Weise einen Wert einem Stück Code zuordnen, das ausgeführt werden soll. Werfen Sie einen Blick auf die folgende einfache switch-Anweisung, um die Syntax in Ruby in den Griff zu bekommen:

Copymeine_note = "A "case meine_note when "A" puts "Du hast bestanden" when "F" puts "Du bist durchgefallen" else puts "Ungültige Note "end

Wie Sie oben sehen können, beginnen wir mit einem Wert myGrade. Im Wesentlichen wollen wir ausgeben, ob der Student aufgrund seiner Note (A oder F) bestanden oder durchgefallen ist.

Anstatt auf eine if-Anweisung zurückzugreifen, können wir den switch verwenden. Im Gegensatz zu if-Anweisungen, die boolesche Ausdrücke innerhalb ihrer Klammern benötigen, übergeben wir bei der switch-Anweisung einfach einen Wert. In diesem Fall übergeben wir myGrade.

Nun, da wir unseren Wert haben, wollen wir eine Reihe von case-Anweisungen einrichten. Diese case-Anweisungen sind im Wesentlichen die rechte Seite eines booleschen Ausdrucks für Gleichheit. Ruby vergleicht myGrade mit jedem der Werte in den case-Anweisungen („A“ und „F“) auf Gleichheit. Wenn es eine Übereinstimmung gibt, wird der Code direkt unter der case-Anweisung ausgeführt.

Breaks

Eine Sache, die bei switch-Anweisungen zu beachten ist, ist, dass Ruby standardmäßig versucht, alle auf Gleichheit zu prüfen, auch wenn es eine Übereinstimmung findet. Das ist anders als bei einer ELSE IF-Struktur, bei der, sobald eine Bedingung wahr ist, die Überprüfung der darunterliegenden nicht mehr stattfindet.

Da Ruby automatisch jeden Fall prüft, egal was passiert, brauchen wir eine Möglichkeit, das zu verhindern (meistens will man das verhindern). Im Falle einer Übereinstimmung soll die switch-Anweisung aufhören, die anderen Fälle zu prüfen.

Da kommt das break Schlüsselwort ins Spiel. Das break-Schlüsselwort teilt Ruby mit, dass wir mit der switch-Anweisung fertig sind, und es soll aus ihr ausbrechen und weitergehen.

Persönlich habe ich schon viele Fehler in Programmen erlebt, die ich geschrieben habe, weil ich vergessen habe, break-Anweisungen einzufügen. Behalten Sie das also im Hinterkopf.

Standard

Wenn Sie sich die obige switch-Anweisung ansehen, werden Sie auch das Schlüsselwort default bemerken. Dieses Schlüsselwort verhält sich ähnlich wie ein ELSE in einer if-Anweisungsstruktur. Jeder Code unterhalb der Standardanweisung wird ausgeführt, wenn keiner der anderen Fälle eine Übereinstimmung ergibt. Beachten Sie auch, dass wir keine break-Anweisung innerhalb der default-Anweisung benötigen.

Generell fängt die Standardanweisung in Situationen, in denen Sie einen Schalter verwenden, einfach alle Situationen ab, die Sie nicht in einer case-Anweisung angeben möchten.

Im Fall des obigen Programms wird Invalid Grade für jede Note ausgegeben, die nicht ein A oder ein F ist.

Die meiste Zeit werden Sie eine Standardanweisung einfügen wollen.

Abschluss

In der Praxis werden switch-Anweisungen viel seltener verwendet als if-Anweisungen. Der Grund dafür ist, dass es viel weniger Situationen gibt, in denen eine switch-Anweisung gegenüber einer if-Anweisung sinnvoll ist. Eine gute Faustregel ist jedoch, dass Sie eine switch-Anweisung benötigen, wenn Sie einen Wert gegen eine Reihe anderer Werte auf Gleichheit prüfen müssen!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.