Modulelessen (1/2)
Voorwaardelijke regels en lussen
De controlestroom in Rust draait om twee hoofdconstructies: voorwaardelijke expressies om te beslissen welk uitvoeringspad moet worden gevolgd, en lusconstructies om instructies te herhalen.
Voorwaardelijke waarden: if als expressie
In Rust is de instructie if een expressie, wat betekent dat deze een waarde retourneert. We kunnen if gebruiken om direct een waarde aan een variabele toe te wijzen:
let condition = true;
let number = if condition { 5 } else { 6 }; // if/else as an expressionLussen en iteraties
Rust biedt drie soorten native loops: loop, while en for.
1. loop (Oneindige lus)
Het sleutelwoord loop creëert een oneindige lus die doorgaat totdat je expliciet zegt dat hij moet stoppen met het gebruik van break:
let mut count = 0;
loop {
count += 1;
if count == 10 {
break; // Exit the loop
}
}Bovendien kunt u een waarde uit een loop retourneren door deze direct na break te plaatsen:
let result = loop {
count += 1;
if count == 10 {
break count * 2; // Returns 20
}
};2. while (voorwaardelijke lus)
Voert een codeblok uit zolang een Booleaanse voorwaarde waar blijft:
let mut number = 3;
while number != 0 {
println!("{}!", number);
number -= 1;
}3. for (Iteratie over verzamelingen en bereiken)
De for lus is het meest gebruikelijke en veiligste hulpmiddel voor het herhalen van elementen in een verzameling of een reeks getallen:
// Iterates over numbers 1 through 3 (excluding 4)
for number in 1..4 {
println!("Valore: {}", number);
}
// Iterates including the right boundary using '='
for number in 1..=3 {
println!("Valore: {}", number); // Prints 1, 2 and 3
}Luslabels
Bij geneste lussen zijn de instructies break en continue standaard van toepassing op de binnenste lus. Met Rust kunt u een luslabel gebruiken (geschreven als 'label_name:) om een buitenste lus expliciet te beëindigen of voort te zetten:
let mut count = 0;
'outer: loop {
loop {
if count == 5 {
break 'outer; // Exits the outer loop directly
}
count += 1;
}
}Probeer het zelf
Declareer een variabele genaamd getal met een waarde van 7. Gebruik vervolgens een if/else-expressie om de waarde 'groter' toe te wijzen aan het variabelebericht als getal groter is dan 5, of anders 'kleiner'. Druk ten slotte het bericht af met println!.
Toon hint
Schrijf `let message = if number > 5 { 'groter' } else { 'kleiner' };` en geef het door aan `println!`.
Oplossing beschikbaar na 3 pogingen
Schrijf een for-lus die de getallen 1 tot en met 5 afdrukt (d.w.z. 1, 2, 3, 4, 5) met behulp van println! bij elke iteratie.
Toon hint
Gebruik de syntaxis van het inclusieve bereik `for i in 1..=5` en voer `println!('{}', i);` uit binnen het blok.
Oplossing beschikbaar na 3 pogingen
Schrijf een lus die een teller voor veranderlijke variabelen ophoogt, beginnend bij 0. Wanneer de teller 10 bereikt, verlaat u de lus en retourneert u de teller vermenigvuldigd met 5 met behulp van de break-instructie om deze waarde toe te wijzen aan een onveranderlijk variabel resultaat. Tenslotte het afdrukresultaat.
Toon hint
Gebruik `let result = loop { ... };`. Binnen de lus verhoogt u `counter` en voegt u de voorwaarde toe `if counter == 10 { break counter * 5; }`.
Oplossing beschikbaar na 3 pogingen