0Pricing
Learn Rust Coding · Lekcja

Wiązanie za pomocą @

Przechwytywanie i testowanie

Wiązanie za pomocą @ to bezpłatna lekcja Learn Rust Coding na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn Rust Coding, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn Rust Coding zawiera 4 lekcji w sumie.

Operator wiązania @

Operator @ pozwala jednocześnie sprawdzić wartość względem wzorca i związać ją z nazwą. Otrzymują Państwo zarówno sprawdzenie, jak i wartość.

Rozwiązywany problem

Wzorzec zakresu informuje, że wartość mieści się w zakresie, ale traci się dostęp do konkretnej wartości. @ przechwytuje ją, jednocześnie nadal sprawdzając zakres.

Podstawowe wiązanie za pomocą @

W tym przykładzie dopasowujemy liczbę z zakresu i zachowujemy jej dokładną wartość za pomocą id.

fn main() {
    let n = 5;
    match n {
        id @ 1..=5 => println!("got {id} in range"),
        _ => println!("out of range"),
    }
}

Bez @

Dla porównania: zwykłe ramię zakresu dopasowuje wartość, ale nie może nadać jej nazwy, więc nie można wyświetlić, która liczba została dopasowana.

fn main() {
    let n = 5;
    match n {
        1..=5 => println!("in range (value unknown here)"),
        _ => println!("out of range"),
    }
}

@ z danymi enumu

Można związać pole i jednocześnie narzucić jego ograniczenie. Tutaj przechwytujemy id tylko wtedy, gdy mieści się w prawidłowym zakresie.

enum Message {
    Hello { id: i32 },
}

fn main() {
    let msg = Message::Hello { id: 7 };
    match msg {
        Message::Hello { id: id @ 3..=10 } => {
            println!("valid id {id}");
        }
        Message::Hello { id } => {
            println!("other id {id}");
        }
    }
}

Wiązanie całej wartości

@ może także wiązać całą ustrukturyzowaną wartość, podczas gdy zagnieżdżony wzorzec sprawdza jej części.

fn main() {
    let point = (3, 4);
    match point {
        p @ (x, _) if x > 0 => println!("{:?} has positive x", p),
        p => println!("{:?}", p),
    }
}

Łączenie z |

Można wiązać wartości w alternatywnych wzorcach. Nazwa musi występować w każdej gałęzi alternatywy.

fn main() {
    let code = 404;
    match code {
        c @ (400 | 404 | 500) => println!("error code {c}"),
        c => println!("code {c}"),
    }
}

@ w if let

Wiązania z użyciem @ działają również w if let.

fn main() {
    let value = Some(50);
    if let Some(n @ 1..=100) = value {
        println!("in range: {n}");
    }
}

Kiedy używać @

Operatora @ należy używać, gdy potrzebne są obie rzeczy:

  • Ograniczenie wartości za pomocą zakresu lub podwzorca
  • Użycie tej dokładnej wartości w treści ramienia

Jeśli nie są potrzebne obie funkcje, prostsze będzie zwykłe wiązanie lub wzorzec.

Czytelność

Ta forma ma postać name @ pattern: wiąż name, jeśli pasuje do pattern. Nazwy powinny być opisowe, aby intencja była jasna.

Grupowanie za pomocą @

Typowym zastosowaniem jest przypisywanie wartości do oznaczonych grup przy jednoczesnym zachowaniu oryginalnej liczby na potrzeby raportowania.

fn classify(temp: i32) -> String {
    match temp {
        t @ ..=0 => format!("freezing ({t})"),
        t @ 1..=20 => format!("cool ({t})"),
        t @ 21..=30 => format!("warm ({t})"),
        t => format!("hot ({t})"),
    }
}

fn main() {
    println!("{}", classify(25));
}

Szybkie sprawdzenie

Co robi operator @ we wzorcu takim jak id @ 1..=5?

Podsumowanie

Poznano operator wiązania @:

  • Wiąże wartość z nazwą podczas sprawdzania jej względem wzorca
  • Rozwiązuje problem utraty wartości przy wzorcach zakresów
  • Działa z danymi enumów, krotkami, alternatywami | oraz if let
  • Należy go używać, gdy potrzebne są zarówno ograniczenie, jak i wartość

Często zadawane pytania

Czy lekcja „Wiązanie za pomocą @” jest bezpłatna?

Tak — pełny tekst „Wiązanie za pomocą @” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn Rust Coding, przejdź na CoddyKit PRO. Kurs Learn Rust Coding zawiera 4 lekcji w sumie.

Co nauczysz się w „Wiązanie za pomocą @”?

Przechwytywanie i testowanie Ćwiczysz Learn Rust Coding z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Learn Rust Coding?

Nie wymagamy żadnego doświadczenia. Learn Rust Coding w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Wiązanie za pomocą @”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Learn Rust Coding?

Tak. Każda lekcja Learn Rust Coding zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. match — szczegółowe omówienie
  2. if let i while let
  3. Wiązanie za pomocą @
  4. Destrukturyzacja
← Powrót do Learn Rust Coding