Binding dengan @
Menangkap dan menguji
Binding dengan @ adalah pelajaran Learn Rust Coding gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Learn Rust Coding, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Learn Rust Coding mencakup 4 pelajaran total.
Operator Pengikatan @
Operator @ memungkinkan Anda menguji sebuah nilai terhadap pola dan mengikatnya ke nama secara bersamaan. Anda mendapatkan pemeriksaan sekaligus nilainya.
Masalah yang Diselesaikannya
Dengan pola rentang, Anda tahu bahwa sebuah nilai berada dalam rentang, tetapi kehilangan akses ke nilai spesifiknya. @ menangkap nilai tersebut sambil tetap menguji rentangnya.
Pengikatan @ Dasar
Di sini kita mencocokkan angka dalam sebuah rentang dan mempertahankan nilai persisnya melalui id.
fn main() {
let n = 5;
match n {
id @ 1..=5 => println!("got {id} in range"),
_ => println!("out of range"),
}
}Tanpa @
Sebagai perbandingan: lengan rentang biasa dapat mencocokkan nilai, tetapi tidak dapat memberinya nama, sehingga Anda tidak dapat mencetak angka mana yang cocok.
fn main() {
let n = 5;
match n {
1..=5 => println!("in range (value unknown here)"),
_ => println!("out of range"),
}
}@ dengan Data Enum
Ikat sebuah bidang sekaligus membatasi nilainya. Di sini kita menangkap id hanya jika nilainya berada dalam rentang yang valid.
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}");
}
}
}Mengikat Seluruh Nilai
@ juga dapat mengikat seluruh nilai terstruktur, sementara pola bertingkat memeriksa bagian-bagiannya.
fn main() {
let point = (3, 4);
match point {
p @ (x, _) if x > 0 => println!("{:?} has positive x", p),
p => println!("{:?}", p),
}
}Menggabungkan dengan |
Anda dapat melakukan pengikatan pada pola alternatif. Nama tersebut harus muncul di setiap cabang alternatif.
fn main() {
let code = 404;
match code {
c @ (400 | 404 | 500) => println!("error code {c}"),
c => println!("code {c}"),
}
}@ dalam if let
Pengikatan dengan @ juga dapat digunakan dalam if let.
fn main() {
let value = Some(50);
if let Some(n @ 1..=100) = value {
println!("in range: {n}");
}
}Kapan Menggunakan @
Gunakan @ ketika Anda memerlukan keduanya:
- Membatasi nilai dengan rentang atau subpola
- Menggunakan nilai persis tersebut dalam isi lengan
Jika tidak memerlukan keduanya, pengikatan atau pola biasa lebih sederhana.
Keterbacaan
Bentuknya dibaca sebagai name @ pattern: ikat name jika cocok dengan pattern. Gunakan nama yang deskriptif agar maksudnya jelas.
Mengelompokkan dengan @
Penggunaan umum lainnya adalah mengelompokkan sebuah nilai ke dalam kelompok berlabel sambil mempertahankan angka aslinya untuk pelaporan.
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));
}Pemeriksaan Singkat
Apa yang dilakukan operator @ dalam pola seperti id @ 1..=5?
Ringkasan
Anda telah mempelajari operator pengikatan @:
- Mengikat nilai ke sebuah nama sambil mengujinya terhadap pola
- Menyelesaikan masalah hilangnya nilai pada pola rentang
- Bekerja dengan data enum, tuple, alternatif
|, danif let - Gunakan ketika Anda memerlukan batasan sekaligus nilainya
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Binding dengan @” gratis?
Ya — teks lengkap “Binding dengan @” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Learn Rust Coding, upgrade ke CoddyKit PRO. Kursus Learn Rust Coding mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Binding dengan @”?
Menangkap dan menguji Kamu berlatih Learn Rust Coding dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Learn Rust Coding?
Tidak diperlukan pengalaman sebelumnya. Learn Rust Coding di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Binding dengan @” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Learn Rust Coding ini?
Ya. Setiap pelajaran Learn Rust Coding menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Pendalaman match
- if let dan while let
- Binding dengan @
- Destrukturisasi