RozdziałyPodstawowe konstrukcje językaSterowanie przepływem

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

  1. Instrukcja if:

    let i = 1;
    if i > 0 { 
        println!("Non-negative number")
    }
  2. Wyrażenie if/else

    let i = -1;
    if i > 0 { 
        println!("Non-negative number");
    } else {
        println!("Negative number");
    }
  3. 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)
  4. 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)
  5. 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

  1. Podstawowa pętla loop z wyjściem za pomocą instrukcji break:

    let mut x = 1;
     
    loop {
        println!("{}", x);
        x = x + 1;
     
        if x > 10 {
            break;
        }
    }
  2. 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

  1. Pętla warunkowa while z warunkiem stopu:

    let mut i = 0;
    while i < 5 {
        println!("{}", i);
        i += 1;
    }
  2. 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

  1. 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);
    }
  2. Iteracja po tablicy z wykorzystaniem pętli for i indeksowania

    let primes: [i32; 8] = [2, 3, 5, 7, 11, 13, 17, 19];
     
    println!("Primes numbers:");
     
    for n in 0..primes.len() {
        println!("{}", n);
    }
  3. Iteracja po zakresie liczb

    for i in 0..10 {
        println!("{}", i);
    }