Binding mit @
Erfassen und prüfen
Binding mit @ ist eine kostenlose Learn Rust Coding-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Learn Rust Coding-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Learn Rust Coding-Kurs umfasst insgesamt 4 Lektionen.
Der @-Bindungsoperator
Mit dem Operator @ können Sie einen Wert anhand eines Musters prüfen und ihn gleichzeitig an einen Namen binden. Sie erhalten sowohl die Prüfung als auch den Wert.
Das Problem, das er löst
Bei einem Bereichsmuster wissen Sie, dass ein Wert in den Bereich fällt, haben aber keinen Zugriff mehr auf den konkreten Wert. @ erfasst ihn und prüft dabei weiterhin den Bereich.
Grundlegende @-Bindung
Hier gleichen wir eine Zahl in einem Bereich ab und behalten ihren genauen Wert über id.
fn main() {
let n = 5;
match n {
id @ 1..=5 => println!("got {id} in range"),
_ => println!("out of range"),
}
}Ohne @
Zum Vergleich: Ein einfacher Bereichsarm gleicht zwar ab, kann den Wert aber nicht benennen. Daher können Sie nicht ausgeben, welche Zahl übereinstimmte.
fn main() {
let n = 5;
match n {
1..=5 => println!("in range (value unknown here)"),
_ => println!("out of range"),
}
}@ mit Enum-Daten
Binden Sie ein Feld und schränken Sie es gleichzeitig ein. Hier erfassen wir die ID nur, wenn sie in einen gültigen Bereich fällt.
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}");
}
}
}Den gesamten Wert binden
@ kann auch einen gesamten strukturierten Wert binden, während ein verschachteltes Muster seine Teile prüft.
fn main() {
let point = (3, 4);
match point {
p @ (x, _) if x > 0 => println!("{:?} has positive x", p),
p => println!("{:?}", p),
}
}Mit | kombinieren
Sie können über alternative Muster hinweg binden. Der Name muss in jedem alternativen Zweig vorkommen.
fn main() {
let code = 404;
match code {
c @ (400 | 404 | 500) => println!("error code {c}"),
c => println!("code {c}"),
}
}@ in if let
Bindungen mit @ funktionieren auch in if let.
fn main() {
let value = Some(50);
if let Some(n @ 1..=100) = value {
println!("in range: {n}");
}
}Wann @ zum Einsatz kommt
Verwenden Sie @, wenn Sie beides benötigen:
- Einen Wert mit einem Bereich oder Teilmuster einzuschränken
- Diesen genauen Wert im Body des Arms zu verwenden
Wenn Sie nicht beides benötigen, ist eine einfache Bindung oder ein einfaches Muster übersichtlicher.
Lesbarkeit
Die Form wird als name @ pattern gelesen: Binde name, wenn es zu pattern passt. Verwenden Sie aussagekräftige Namen, damit die Absicht klar bleibt.
Werte mit @ gruppieren
Eine häufige Anwendung besteht darin, einen Wert in beschriftete Gruppen einzuordnen und dabei die ursprüngliche Zahl für die Ausgabe zu behalten.
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));
}Schnelltest
Was bewirkt der Operator @ in einem Muster wie id @ 1..=5?
Zusammenfassung
Sie haben den @-Bindungsoperator kennengelernt:
- Er bindet einen Wert an einen Namen und prüft ihn gleichzeitig anhand eines Musters
- Er löst das Problem des verlorenen Werts bei Bereichsmustern
- Er funktioniert mit Enum-Daten, Tupeln,
|-Alternativen undif let - Verwenden Sie ihn, wenn Sie sowohl die Einschränkung als auch den Wert benötigen
Häufig gestellte Fragen
Ist die Lektion „Binding mit @“ kostenlos?
Ja — der vollständige Text von „Binding mit @“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Learn Rust Coding-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Learn Rust Coding-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Binding mit @“?
Erfassen und prüfen Du übst Learn Rust Coding mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Learn Rust Coding zu starten?
Keine Vorkenntnisse erforderlich. Learn Rust Coding auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Binding mit @“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Learn Rust Coding-Lektion Code schreiben und ausführen?
Ja. Jede Learn Rust Coding-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- match im Detail
- if let und while let
- Binding mit @
- Destrukturierung