Sterowanie przepływem
Instrukcje i wyrażenia
Czym różni się instrukcja od wyrażenia?
Kod bloku jako wyrażenie
fn main() {
let y = {
let x = 3;
x + 1
};
println!("The value of y is {}", y);
}
Wyrażenie nie mają na końcu średnika (patrz linia 5 w powyższym fragmencie kodu). Jeśli po wyrażeniu dodamy średnik, to zmieniamy je w instrukcję, która nie zwróci wartości.
Wyrażenie warunkowe
-
Instrukcja
if
:let i = 1; if i > 0 { println!("Non-negative number") }
-
Wyrażenie
if/else
let i = -1; if i > 0 { println!("Non-negative number"); } else { println!("Negative number"); }
-
Określ typ wartości zwracanej przez
if/else
w poniższym przypadku:let i = -1; let abs_i = if i > 0 { i } else { -i}; // Jaki jest typ abs_i? println!("{}", abs_i)
-
Określ typ wartości zwracanej przez
if/else
w poniższym przypadku:let i = -1; let res = if i >= 0 || i % 2 == 0 { println!("Nonnegative or even") }; println!("{:?}", res)
-
Określ typ wartości zwracanej przez
if/else
w poniższym przypadku:let i = -1; let res = if i >= 0 {i}; println!("{:?}", res)
Wyjaśnij jaka zasada musi być spełniona, aby wyrażenia warunkowe mogło zwracać konkretną wartość?
Pętle
Pętla loop
-
Podstawowa pętla
loop
z wyjściem za pomocą instrukcjibreak
:let mut x = 1; loop { println!("{}", x); x = x + 1; if x > 10 { break; } }
-
Pętla
loop
może zwracać wartość:let mut x = 1; let y = loop { println!("{}", x); x = x + 1; if x > 10 { break x; } }; println!("Results of loop is {}.", y);
Pętla while
-
Pętla warunkowa
while
z warunkiem stopu:let mut i = 0; while i < 5 { println!("{}", i); i += 1; }
-
Iteracja po tablicy z wykorzystaniem pętli
while
i indeksowania:let primes: [i32; 8] = [2, 3, 5, 7, 11, 13, 17, 19]; println!("Primes numbers:"); let mut i = 0; while i < primes.len() { println!("{}", primes[i]); i += 1; }
Pętla for
-
Iteracja po kolekcji z wykorzystaniem pętli
for
let primes: [i32; 8] = [2, 3, 5, 7, 11, 13, 17, 19]; println!("Primes numbers:"); for n in primes { println!("{}", n); }
-
Iteracja po tablicy z wykorzystaniem pętli
for
i indeksowanialet primes: [i32; 8] = [2, 3, 5, 7, 11, 13, 17, 19]; println!("Primes numbers:"); for n in 0..primes.len() { println!("{}", n); }
-
Iteracja po zakresie liczb
for i in 0..10 { println!("{}", i); }