Menu
Coddy logo textTech

Etykiety pętli

Część sekcji Podstawy ścieżki Rust w Coddy. Lekcja 42 z 75.

Etykiety w Rust pomagają przerywać lub kontynuować określone pętle, gdy są zagnieżdżone. Dodaj 'label: przed pętlą, aby ją oznaczyć.

Na przykład:

'outer: for i in 1..=3 {
    'inner: for j in 1..=3 {
        if i * j > 5 {
            break 'outer;
            // This will break the outer loop
        }
        println!("({}, {})", i, j);
    }
}

W tym przykładzie mamy dwie zagnieżdżone pętle oznaczone etykietami 'outer i 'inner. Gdy iloczyn i i j jest większy niż 5, wykonywana jest instrukcja break 'outer;, która przerywa zewnętrzną pętlę. Wynik działania tego kodu to:

(1, 1)
(1, 2)
(1, 3)
(2, 1)
(2, 2)

Podobnie możesz użyć continue 'label;, aby przejść do następnej iteracji określonej pętli. Na przykład:

'outer: for i in 1..=3 {
    'inner: for j in 1..=3 {
        if i == j {
            continue 'outer;
            // This will continue the outer loop
        }
        println!("({}, {})", i, j);
    }
}

W tym przypadku, gdy i jest równe j, wykonywana jest instrukcja continue 'outer;, która pomija resztę pętli wewnętrznej i przechodzi do następnej iteracji pętli zewnętrznej. Wynik będzie następujący:

(2, 1)
(3, 1)
(3, 2)
challenge icon

Wyzwanie

Początkujący

Napisz program w Rust, który używa etykietowanych pętli do znalezienia pierwszej pary liczb (i, j), których suma jest większa niż 10, a ich iloczyn jest wielokrotnością 12 (iloczyn dzieli się przez 12 bez reszty).  Program powinien iterować po wartościach i od 1 do 20 oraz j od 1 do 20.

Po znalezieniu pary wypisz ją w formacie (i, j) i przerwij zewnętrzną pętlę.

Spróbuj swoich sił

fn main() {
    'outer: for i in 1..=20 {
        for j in 1..=20 {
            // Your logic here
            
            
            break 'outer;
        }
    }
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Kompilator Rust online