Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Pola (Patterns) dan Pencocokan (Matching)

Patterns (pola) adalah sebuah sintaks spesial di Rust buat mencocokkan (matching) struktur dari berbagai tipe, baik yang kompleks maupun yang sederhana. Memakai patterns bersamaan dengan ekspresi match dan konstruk-konstruk lainnya ngasih kita kontrol yang lebih banyak terhadap control flow (alur kontrol) dari sebuah program. Sebuah pattern terdiri dari beberapa kombinasi dari hal-hal berikut ini:

  • Literals (nilai harfiah)
  • Array, enum, struct, atau tuple yang di-destructure (dipecah-pecah)
  • Variabel
  • Wildcards (kartu liar)
  • Placeholders (tempat pengganti)

Beberapa contoh patterns meliputi x, (a, 3), dan Some(Color::Red). Di dalam konteks di mana patterns itu valid, komponen-komponen ini mendeskripsikan bentuk (shape) dari suatu data. Program kita kemudian mencocokkan nilai dengan patterns tersebut buat menentukan apakah nilai tersebut punya bentuk data yang tepat buat melanjutkan eksekusi potongan kode tertentu.

Buat memakai sebuah pattern, kita membandingkannya dengan suatu nilai. Kalau pattern tersebut cocok dengan nilainya, kita memakai bagian-bagian dari nilai itu di dalam kode kita. Ingat kembali ekspresi match di Bab 6 yang memakai patterns, kayak di contoh mesin penyortir koin. Kalau nilainya cocok sama bentuk dari pattern-nya, kita bisa memakai potongan-potongan yang udah dikasih nama. Kalau tidak cocok, kode yang terkait sama pattern tersebut tidak bakal dijalankan.

Bab ini adalah sebuah referensi tentang semua hal yang berkaitan dengan patterns. Kita bakal membahas tempat-tempat valid di mana kita bisa memakai patterns, perbedaan antara refutable (bisa dibantah/bisa gagal) dan irrefutable (tidak bisa dibantah/pasti sukses) patterns, serta berbagai macam sintaks pattern yang mungkin bakal kita temui. Di akhir bab ini, kita bakal tahu gimana cara memakai patterns buat mengekspresikan banyak konsep dengan cara yang jelas.