Lär dig programmera i Rust · Lektion

Bindning med @

Fånga och testa

Lektion 3 av 413 steg

Bindning med @ är en gratis lektion i Lär dig programmera i Rust på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Lär dig programmera i Rust, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Lär dig programmera i Rust innehåller totalt 4 lektioner.

Bindningsoperatorn @

Operatorn @ låter dig testa ett värde mot ett mönster och samtidigt binda det till ett namn. Du får både kontrollen och värdet.

Problemet den löser

Med ett intervallmönster vet du att ett värde låg inom intervallet, men du förlorar åtkomsten till det specifika värdet. @ fångar värdet samtidigt som intervallet testas.

Grundläggande @-bindning

Här matchar vi ett tal inom ett intervall och behåller dess exakta värde via id.

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

Utan @

Jämför: en vanlig intervallarm matchar men kan inte namnge värdet, så du kan inte skriva ut vilket tal som matchade.

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

@ med enum-data

Bind ett fält samtidigt som du begränsar det. Här fångar vi endast id om det ligger inom ett giltigt intervall.

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}");
        }
    }
}

Binda hela värdet

@ kan också binda ett helt strukturerat värde medan ett nästlat mönster kontrollerar dess delar.

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

Kombinera med |

Du kan binda värden över alternativa mönster. Namnet måste förekomma i varje alternativ gren.

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

@ i if let

Bindningar med @ fungerar även i if let.

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

När ska @ användas?

Använd @ när du behöver båda:

  • Begränsa ett värde med ett intervall eller delmönster
  • Använda det exakta värdet i armens kodblock

Om du inte behöver båda delarna är en vanlig bindning eller ett vanligt mönster enklare.

Läsbarhet

Formen läses som name @ pattern: bind name om det matchar pattern. Använd beskrivande namn så att avsikten är tydlig.

Gruppering med @

Ett vanligt användningsområde är att sortera ett värde i namngivna grupper och samtidigt behålla det ursprungliga talet för rapportering.

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));
}

Snabbkontroll

Vad gör operatorn @ i ett mönster som id @ 1..=5?

Sammanfattning

Du har lärt dig bindningsoperatorn @:

  • Den binder ett värde till ett namn samtidigt som den testar det mot ett mönster
  • Den löser problemet med förlorade värden i intervallmönster
  • Den fungerar med enum-data, tupler, alternativen med | och if let
  • Använd den när du behöver både begränsningen och värdet
Gratis att börja

Lär dig Rust med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
39
Lektioner
144

Vanliga frågor

Är lektionen ”Bindning med @” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Lär dig programmera i Rust, inklusive ”Bindning med @”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Lär dig programmera i Rust innehåller totalt 4 lektioner.

Vad lär jag mig i ”Bindning med @”?

Fånga och testa Ni övar på Lär dig programmera i Rust med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Lär dig programmera i Rust?

Du behöver inga förkunskaper. Utbildningen i Lär dig programmera i Rust på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”Bindning med @”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Lär dig programmera i Rust-lektionen?

Ja. Varje Lär dig programmera i Rust-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. match på djupet
  2. if let och while let
  3. Bindning med @
  4. Destrukturering
← Tillbaka till Lär dig programmera i Rust