Wie im echten Leben geht nicht alles gerade aus. Sofern wir also für einen alternativen Plan gewidmet sein wollen, lernen wir in dieser Lektion, wie das ganze realisiert wird.
Fallunterscheidungen starten in Solidity und auch in vielen anderen Programmiersprachen, wie Python und JavaScript mit dem konditionalen Kennwort
IF
. Anschließend wird eine Bedingung für den IF
-Fall definiert. Sofern die Bedingung true
ist, wird der IF
-Fall ausgeführt. Optional kann ein Else
-Fall nachdem IF
-Fall definiert werden. Dieser wird eben nur aktiviert, wenn die Bedingung des IF
-Falls nicht true
ist. Sofern wir aber mehrere Fälle unterscheiden wollen, brauchen wir ein
else if
-Fall und danach wieder eine entsprechende Bedingung, wann dieser Fall ausgeführt werden soll. In dem nachfolgenden Beispiel steigert sie die Komplexität der Fallunterscheidung. Zuerst haben wir nur einen Fall. Am Ende sind es 3. Es ist möglich 10 Fälle zu definieren, jedoch sollte man vorsichtig sein mit Fallunterscheidungen, da sie leicht zu Fehlern führen.
// SPDX-License-Identifier: MIT pragma solidity ^0.8.13; contract IfElse { function fallEins(uint z) public pure returns (bool) { // Wir können nur ein if-Fall deklarieren if (z == 0) { return false; } return true; } function fallZwei(uint y) public pure returns (bool) { // Fallunterscheidung je nach y // Fall1: y ist kleiner 10 -> Tritt ein, wenn y den Wert 0 bis 9 annimmt. if (y < 10) { return false; // Fall2: y ist größer 10 -> Tritt ein, wenn y den Wert 10 bis unendlich (max. uint256-Wert) annimmt. } else { return true; } } function fallDrei(uint x) public pure returns (uint) { // Fallunterscheidung // Fall1: x ist kleiner 10 -> Tritt ein, wenn x den Wert 0 bis 9 annimmt. if (x < 10) { return 0; // Fall2: x ist kleiner 20 -> Tritt ein, wenn x den Wert 10 bis 19 annimmt. } else if (x < 20) { return 1; // Sonstiger Fall -> Tritt ein, wenn x werde den Wert 0 bis 19 annimmt. } else { return 2; } } function fallBonus(uint _x) public pure returns (uint) { // if (_x < 10) { // return 1; // } // return 2; // Kurzform des oberen if / else statements. // Besonderheit ist das "?". Es handelt sich hierbei um den ternary Operator, // welcher es uns erlaubt, "kürzere" if / else statements zu schreiben. return _x < 10 ? 1 : 2; } }
⬅️ Vorherige Lektion
Nächste Lektion ➡️