Penjaga dan Pengikatan Match
Tambahkan kondisi dan tangkap nilai.
Penjaga dan Pengikatan Match adalah pelajaran Learn Rust Coding gratis di CoddyKit. Ini adalah pelajaran 4 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.
Apa Itu Penjaga Match?
Penjaga match adalah kondisi if tambahan yang ditambahkan ke lengan match. Lengan tersebut hanya dijalankan jika pola cocok dan kondisinya benar.
Penjaga ini memungkinkan Anda membagi satu varian menjadi kasus-kasus yang lebih terperinci berdasarkan datanya.
match number {
Some(n) if n > 0 => println!("positive"),
Some(n) => println!("zero or negative"),
None => println!("no number"),
}Sintaks Penjaga
Tuliskan pola, lalu if condition, kemudian =>. Kondisi tersebut dapat menggunakan variabel apa pun yang diikat oleh pola.
Jika penjaga bernilai salah, Rust melanjutkan untuk mencoba lengan berikutnya.
fn main() {
let n = 4;
match n {
x if x % 2 == 0 => println!("even"),
_ => println!("odd"),
}
}Penjaga dengan Data Enum
Penjaga paling berguna dengan enum yang menyimpan data. Anda mengikat nilai di dalamnya, lalu mengujinya.
Di sini saldo positif dan saldo negatif mendapatkan pesan yang berbeda, meskipun keduanya merupakan varian yang sama.
enum Account {
Balance(i32),
Closed,
}
fn main() {
let a = Account::Balance(-5);
match a {
Account::Balance(b) if b < 0 => println!("overdrawn"),
Account::Balance(b) => println!("balance {}", b),
Account::Closed => println!("closed"),
}
}Urutan Tetap Penting
Karena lengan dicoba dari atas ke bawah, letakkan lengan yang dijaga dan lebih spesifik sebelum lengan umum.
Jika lengan biasa Balance(b) berada di urutan pertama, lengan itu akan cocok dengan semuanya dan lengan yang dijaga tidak pernah dijalankan.
Mencocokkan Nilai Literal
Anda juga dapat mencocokkan literal tertentu secara langsung dalam pola, tanpa penjaga.
Di sini 0 dan 1 dicocokkan secara tepat, sedangkan _ menangani sisanya.
fn main() {
let n = 1;
match n {
0 => println!("zero"),
1 => println!("one"),
_ => println!("many"),
}
}Mencocokkan Rentang
Pola dapat mencocokkan rentang nilai dengan ..=, yang mencakup kedua ujungnya.
Ini merupakan alternatif yang rapi untuk beberapa penjaga perbandingan.
fn main() {
let score = 85;
match score {
0..=59 => println!("fail"),
60..=100 => println!("pass"),
_ => println!("out of range"),
}
}Pengikatan dengan Operator @
Operator @ memungkinkan Anda menguji nilai terhadap pola dan mengikatnya ke nama pada saat yang sama.
Di sini id @ 1..=5 memeriksa rentang tersebut dan menyimpan nilai sebenarnya dalam id agar dapat dicetak.
fn main() {
let n = 3;
match n {
id @ 1..=5 => println!("small id {}", id),
other => println!("other {}", other),
}
}Mengikat Seluruh Nilai
Nama biasa dalam pola, seperti other di atas, mengikat seluruh nilai. Nama itu berfungsi sebagai penampung semua yang tetap dapat Anda gunakan.
Gunakan _ jika ingin mengabaikan nilai, dan gunakan nama jika Anda membutuhkannya.
fn main() {
let n = 99;
match n {
0 => println!("zero"),
value => println!("got {}", value),
}
}Menggabungkan Penjaga dan Pengikatan
Anda dapat menggabungkan pengikatan dengan penjaga untuk memperoleh kendali yang presisi: ikat datanya, lalu tambahkan kondisi.
Program ini secara khusus menandai saldo genap yang besar.
enum Account {
Balance(i32),
}
fn main() {
let a = Account::Balance(200);
match a {
Account::Balance(b) if b > 100 && b % 2 == 0 => println!("big even {}", b),
Account::Balance(b) => println!("normal {}", b),
}
}Penjaga pada Beberapa Pola
Penjaga berlaku untuk seluruh lengan, bahkan ketika lengan tersebut menggabungkan pola dengan |.
Kondisi diperiksa setelah salah satu pola yang tercantum cocok.
fn main() {
let n = 6;
match n {
2 | 4 | 6 if n > 3 => println!("big even"),
_ => println!("other"),
}
}Menggabungkan Semuanya
Program terakhir ini menggabungkan varian dengan data, pengikatan, penjaga, dan penampung semua untuk mengklasifikasikan pembacaan suhu.
Ubah nilainya dan jalankan kembali untuk melihat lengan yang berbeda dijalankan.
enum Reading {
Temp(i32),
Missing,
}
fn main() {
let r = Reading::Temp(38);
match r {
Reading::Temp(t) if t >= 38 => println!("fever: {}", t),
Reading::Temp(t) => println!("normal: {}", t),
Reading::Missing => println!("no reading"),
}
}Pemeriksaan Singkat
Periksa pemahaman Anda tentang penjaga dan pengikatan.
Ringkasan
Anda telah mempelajari cara menyempurnakan pencocokan dengan penjaga (pattern if condition), mencocokkan literal dan rentang (..=), serta membuat pengikatan dengan nama atau operator @.
Jika digabungkan dengan semua materi sebelumnya, kini Anda dapat memodelkan himpunan keadaan tetap, melampirkan data padanya, dan merespons setiap kasus secara tepat. Kerja bagus dalam mempelajari enum dan match!
Belajar Rust dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 39
- Pelajaran
- 144
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Penjaga dan Pengikatan Match” gratis?
Ya — teks lengkap “Penjaga dan Pengikatan Match” 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 “Penjaga dan Pengikatan Match”?
Tambahkan kondisi dan tangkap nilai. 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 4 dari 4.
Berapa lama pelajaran “Penjaga dan Pengikatan Match” 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
- Mendefinisikan Enum Pertama Anda
- Mencocokkan Varian Enum
- Enum dengan Data
- Penjaga dan Pengikatan Match