Lektionen des Moduls (1/2)
Bedingungen und Schleifen
Die Ablaufsteuerung in Rust dreht sich um zwei Hauptkonstrukte: bedingte Ausdrücke, um zu entscheiden, welcher Weg eingeschlagen werden soll, und Schleifenkonstrukte, um Anweisungen zu wiederholen.
Bedingungen: if als Ausdruck
In Rust ist die if-Anweisung ein Ausdruck, was bedeutet, dass sie einen Wert zurückgibt. Wir können if verwenden, um einer Variablen direkt einen Wert zuzuweisen:
let condition = true;
let number = if condition { 5 } else { 6 }; // if/else come espressione
Schleifen und Iterationen
Rust bietet drei Arten von nativen Schleifen: loop, while und for.
1. loop (Endlosschleife)
Das Schlüsselwort loop erstellt eine Endlosschleife, die so lange fortgesetzt wird, bis Sie ihr mit break explizit mitteilen, dass sie stoppen soll:
let mut count = 0;
loop {
count += 1;
if count == 10 {
break; // Esce dal ciclo
}
}
Darüber hinaus können Sie einen Wert aus einem loop zurückgeben, indem Sie ihn direkt nach break platzieren:
let result = loop {
count += 1;
if count == 10 {
break count * 2; // Restituisce 20
}
};
2. while (Bedingte Schleife)
Führt einen Codeblock aus, solange eine boolesche Bedingung wahr bleibt:
let mut number = 3;
while number != 0 {
println!("{}!", number);
number -= 1;
}
3. for (Iteration über Sammlungen und Bereiche)
Die for-Schleife ist das gängigste und sicherste Werkzeug, um die Elemente einer Sammlung oder Zahlenbereiche zu durchlaufen:
// Itera sui numeri da 1 a 3 (escluso il 4)
for number in 1..4 {
println!("Valore: {}", number);
}
// Itera includendo l'estremo destro usando '='
for number in 1..=3 {
println!("Valore: {}", number); // Stampa 1, 2 e 3
}
Schleifen-Labels (Loop Labels)
Bei verschachtelten Schleifen beziehen sich die Anweisungen break und continue standardmäßig auf die innerste Schleife. Rust ermöglicht es, eine Schleife mit einem Label (geschrieben als 'label_name:) zu versehen, um eine weiter außen liegende Schleife explizit abbrechen oder fortsetzen zu können:
let mut count = 0;
'outer: loop {
loop {
if count == 5 {
break 'outer; // Esce direttamente dal loop esterno
}
count += 1;
}
}
Probiere es aus
Deklarieren Sie eine Variable namens number mit dem Wert 7. Verwenden Sie anschließend einen if/else-Ausdruck, um der Variablen message den Wert 'greater' zuzuweisen, wenn number größer als 5 ist, andernfalls den Wert 'smaller'. Geben Sie message schließlich mit println! aus.
Hinweis anzeigen
Schreiben Sie `let message = if number > 5 { 'greater' } else { 'smaller' };` und übergeben Sie diese an `println!`.
Lösung nach 3 Versuchen verfügbar
Schreiben Sie eine for-Schleife, die die Zahlen von 1 bis einschließlich 5 (also 1, 2, 3, 4, 5) ausgibt, wobei bei jeder Iteration println! verwendet wird.
Hinweis anzeigen
Verwenden Sie die Syntax des inklusiven Bereichs `for i in 1..=5` und führen Sie `println!('{}', i);` im Block aus.
Lösung nach 3 Versuchen verfügbar
Schreiben Sie eine Schleife (loop), die eine veränderliche Variable counter ausgehend von 0 erhöht. Wenn counter den Wert 10 erreicht, verlassen Sie die Schleife und geben Sie counter multipliziert mit 5 über die break-Anweisung zurück, um diesen Wert einer unveränderlichen Variablen result zuzuweisen. Geben Sie result schließlich aus.
Hinweis anzeigen
Verwenden Sie `let result = loop { ... };`. Erhöhen Sie innerhalb der Schleife `counter` und fügen Sie die Bedingung `if counter == 10 { break counter * 5; }` ein.
Lösung nach 3 Versuchen verfügbar