Enum untuk Tipe Khusus
Manfaatkan enum untuk mendefinisikan tipe yang dapat berupa salah satu dari beberapa varian dan sering kali membawa data terkait.
Enum untuk Tipe Khusus adalah pelajaran Learn Rust Coding gratis di CoddyKit. Ini adalah pelajaran 2 dari 3. 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 3 pelajaran total.
Enum: Pilihan Tipe Kustom
Selamat datang di Enum untuk Tipe Kustom! Dalam Rust, enum (enumerasi) memungkinkan Anda mendefinisikan tipe yang dapat berupa salah satu dari beberapa varian berbeda yang mungkin.
Anggaplah enum sebagai cara untuk mengatakan, "Item ini dapat berupa A, OR B, OR C." Enum sangat berguna untuk merepresentasikan berbagai keadaan atau pilihan.
Mendefinisikan Enum Sederhana
Untuk mendefinisikan enum, Anda menggunakan kata kunci enum, diikuti namanya dan kurung kurawal yang berisi varian-variannya. Setiap varian merupakan pilihan yang berbeda.
Berikut contoh sederhana untuk arah mata angin:
enum Direction {
North,
South,
East,
West,
}
fn main() {
let my_direction = Direction::North;
println!("My direction is {:?}", my_direction);
}Enum dengan Data Terkait
Berbeda dari varian sederhana, varian enum juga dapat menyimpan data! Hal ini membuat enum sangat kuat karena setiap varian dapat membawa kumpulan informasi berbeda miliknya sendiri.
Datanya dapat berupa tuple (seperti (i32, String)) atau struct (seperti { x: i32, y: i32 }).
Data Terkait dalam Praktik
Mari kita lihat enum yang setiap variannya merepresentasikan jenis Message yang berbeda, dengan sebagian varian membawa data dan sebagian lainnya tidak.
Perhatikan bahwa Move menggunakan struct, Write menggunakan String, dan ChangeColor menggunakan tuple.
enum Message {
Quit,
Move { x: i32, y: i32 },
Write(String),
ChangeColor(i32, i32, i32),
}
fn main() {
let m1 = Message::Quit;
let m2 = Message::Move { x: 10, y: 20 };
let m3 = Message::Write(String::from("hello"));
let m4 = Message::ChangeColor(255, 0, 128);
// We can't directly print enums with associated data using {:?}
// without deriving Debug, which we'll cover later.
// For now, just know these instances are created.
println!("Messages created!");
}Enum `Option`: Menangani Ketiadaan
Salah satu enum paling mendasar dalam Rust adalah Option<T>. Enum ini digunakan untuk merepresentasikan nilai yang mungkin ada atau mungkin tidak ada, sehingga mencegah error pointer null yang umum terjadi dalam bahasa lain.
Some(T): Varian yang menyimpan nilai bertipeT.None: Varian yang menunjukkan tidak adanya nilai.
Menggunakan `Option<T>` secara Efektif
Option<T> memaksa Anda menangani kasus Some dan None secara eksplisit, sehingga kode Anda lebih aman dan tangguh. Tidak ada lagi crash null yang tidak terduga!
Berikut cara Anda mungkin menggunakannya:
fn find_item(id: i32) -> Option<String> {
if id == 7 {
Some(String::from("Found item 7!"))
} else {
None
}
}
fn main() {
let item1 = find_item(7);
let item2 = find_item(5);
println!("Item 1: {:?}", item1);
println!("Item 2: {:?}", item2);
}Sekilas: Enum `Result`
Enum penting lainnya adalah Result<T, E>, yang digunakan untuk penanganan kesalahan. Enum ini memiliki dua varian:
Ok(T): Menunjukkan keberhasilan dan berisi nilai yang berhasil diperoleh.Err(E): Menunjukkan kegagalan dan berisi nilai kesalahan.
Kita akan membahas Result secara mendalam pada pelajaran berikutnya, tetapi penting untuk mengetahui bahwa ini adalah pola enum lain yang sangat kuat!
Metode pada Enum
Sama seperti pada struct, Anda dapat mendefinisikan metode untuk enum menggunakan blok impl. Metode ini dapat melakukan tindakan atau mengembalikan nilai berdasarkan varian enum.
Mari tambahkan metode call ke enum Message kita sebelumnya:
enum Message {
Quit,
Move { x: i32, y: i32 },
Write(String),
ChangeColor(i32, i32, i32),
}
impl Message {
fn call(&self) {
println!("A message was called!");
}
}
fn main() {
let m = Message::Write(String::from("hello"));
m.call();
}Pemeriksaan Singkat tentang Enum
Pernyataan manakah berikut ini yang benar tentang enum Rust?
Rangkuman: Enum untuk Tipe Kustom
Bagus sekali! Anda telah mempelajari bagaimana enum Rust menyediakan cara yang kuat untuk mendefinisikan tipe kustom yang dapat berupa salah satu dari beberapa varian.
- Enum memungkinkan Anda memodelkan pilihan dan status dengan jelas.
- Varian dapat membawa data terkait, sehingga sangat fleksibel.
- Enum
Option<T>penting untuk menangani ketiadaan nilai dengan aman. - Enum dapat memiliki metode yang didefinisikan dengan blok
impl.
Berikutnya, kita akan mempelajari cara bekerja dengan varian enum ini menggunakan pencocokan pola yang kuat!
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Enum untuk Tipe Khusus” gratis?
Ya — teks lengkap “Enum untuk Tipe Khusus” 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 3 pelajaran total.
Apa yang akan aku pelajari di “Enum untuk Tipe Khusus”?
Manfaatkan enum untuk mendefinisikan tipe yang dapat berupa salah satu dari beberapa varian dan sering kali membawa data terkait. 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 2 dari 3.
Berapa lama pelajaran “Enum untuk Tipe Khusus” 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 dan Menggunakan Struct
- Enum untuk Tipe Khusus
- Pencocokan Pola yang Ampuh