0Pricing
Learn Rust Coding · Pelajaran

Pendalaman match

Pola dan guard

Pendalaman match adalah pelajaran Learn Rust Coding gratis di CoddyKit. Ini adalah pelajaran 1 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.

Ekspresi match

match membandingkan sebuah nilai dengan serangkaian pola dan menjalankan lengan dari kecocokan pertama. Ini adalah sebuah ekspresi, jadi menghasilkan nilai.

fn main() {
    let n = 3;
    let label = match n {
        1 => "one",
        2 => "two",
        3 => "three",
        _ => "many",
    };
    println!("{label}");
}

Kelengkapan

Sebuah match harus mencakup setiap kemungkinan nilai. Karakter pengganti _ menangkap apa pun yang tidak cocok dengan lengan sebelumnya, sehingga memastikan kelengkapan.

fn main() {
    let x = 42;
    match x {
        0 => println!("zero"),
        _ => println!("nonzero"),
    }
}

Mencocokkan Banyak Nilai

Gunakan | untuk mencocokkan beberapa pola dalam satu lengan.

fn main() {
    let c = 'e';
    match c {
        'a' | 'e' | 'i' | 'o' | 'u' => println!("vowel"),
        _ => println!("consonant"),
    }
}

Pola Rentang

Cocokkan rentang nilai dengan ..= (inklusif). Sangat berguna untuk mengelompokkan angka atau karakter.

fn main() {
    let score = 85;
    let grade = match score {
        90..=100 => 'A',
        80..=89 => 'B',
        70..=79 => 'C',
        _ => 'F',
    };
    println!("Grade: {grade}");
}

Penjaga match

Penjaga adalah kondisi if tambahan pada sebuah lengan. Lengan tersebut hanya cocok ketika pola sesuai dan penjaganya bernilai benar.

fn main() {
    let pair = (2, -2);
    match pair {
        (x, y) if x + y == 0 => println!("sum is zero"),
        (x, _) if x % 2 == 0 => println!("first is even"),
        _ => println!("no rule"),
    }
}

Pengikatan dalam Pola

Pola dapat mengikat bagian yang cocok ke variabel untuk digunakan dalam isi lengan.

fn main() {
    let msg = Some(7);
    match msg {
        Some(n) => println!("got {n}"),
        None => println!("nothing"),
    }
}

Mencocokkan Enum

match sangat berguna untuk enum, terutama ketika variannya membawa data.

enum Shape {
    Circle(f64),
    Rectangle(f64, f64),
}

fn area(s: Shape) -> f64 {
    match s {
        Shape::Circle(r) => 3.14159 * r * r,
        Shape::Rectangle(w, h) => w * h,
    }
}

fn main() {
    println!("{}", area(Shape::Rectangle(3.0, 4.0)));
}

Mengabaikan dengan _ dan ..

Gunakan _ untuk mengabaikan satu nilai dan .. untuk mengabaikan sisa tuple atau struct.

fn main() {
    let triple = (1, 2, 3);
    match triple {
        (first, ..) => println!("first is {first}"),
    }
}

Mengembalikan Nilai dari match

Karena match adalah sebuah ekspresi, Anda dapat menetapkan hasilnya ke variabel atau langsung mengembalikannya. Setiap lengan harus menghasilkan tipe yang sama.

fn describe(n: i32) -> &'static str {
    match n.cmp(&0) {
        std::cmp::Ordering::Less => "negative",
        std::cmp::Ordering::Equal => "zero",
        std::cmp::Ordering::Greater => "positive",
    }
}

fn main() {
    println!("{}", describe(-5));
}

Urutan Lengan Penting

Lengan diperiksa dari atas ke bawah; kecocokan pertama yang ditemukan akan digunakan. Letakkan pola khusus sebelum pola umum dan wildcard di urutan terakhir.

Mengikat Rentang dengan @

Gabungkan rentang dengan operator @ untuk menguji sebuah nilai sekaligus mempertahankan isi persisnya dalam lengan yang sama.

fn main() {
    let n = 42;
    match n {
        small @ 0..=9 => println!("single digit: {small}"),
        big @ 10..=99 => println!("two digits: {big}"),
        _ => println!("large"),
    }
}

Pemeriksaan Singkat

Apa tujuan penjaga match seperti (x, y) if x > y?

Ringkasan

Anda telah mempelajari match secara mendalam:

  • Ini adalah ekspresi lengkap yang menghasilkan nilai
  • | mencocokkan beberapa pola; ..= mencocokkan rentang
  • Penjaga menambahkan kondisi if tambahan
  • Pola mengikat data; _ dan .. mengabaikan bagian tertentu
  • Urutan lengan penting — kecocokan pertama yang digunakan

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pendalaman match” gratis?

Ya — teks lengkap “Pendalaman 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 “Pendalaman match”?

Pola dan guard 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 1 dari 4.

Berapa lama pelajaran “Pendalaman 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

  1. Pendalaman match
  2. if let dan while let
  3. Binding dengan @
  4. Destrukturisasi
← Kembali ke Learn Rust Coding