Menu
CoddyTech

Menggunakan 'match' dengan 'Option'

Termasuk bagian Logika dan Alur dalam perjalanan Rust di Coddy. Pelajaran 36 dari 66.

Sekarang setelah kamu memahami apa itu Option, mari pelajari cara paling umum dan eksplisit untuk menanganinya: menggunakan ekspresi match. Pendekatan ini mengharuskan kamu mempertimbangkan kedua kemungkinan, yaitu saat ada nilai dan saat tidak ada nilai.

Ekspresi match bekerja dengan sempurna bersama Option karena kamu bisa membuat arm untuk kedua varian:

let maybe_name = Some("Alice".to_string());

match maybe_name {
    Some(name) => println!("Hello, {}!", name),
    None => println!("Hello, stranger!"),
}

Perhatikan bagaimana arm Some(name) mengambil nilai dari dalam varian Some. Variabel name sekarang berisi String yang sebenarnya, bukan Option. Ini disebut destructuring: kamu mengambil nilai di dalamnya dari pembungkus.

Cabang None menangani kasus saat tidak ada nilai, sehingga kamu dapat memberikan perilaku alternatif, seperti menampilkan pesan default atau melakukan tindakan lain.

challenge icon

Tantangan

Mudah

Kamu akan menerima nama siswa sebagai input. Nama tersebut mungkin ada di sistem atau mungkin tidak ada. Buat Option<String> yang berisi Some(name) jika nama tidak kosong, atau None jika nama kosong. Gunakan ekspresi match untuk menangani kedua kasus dan mencetak pesan yang sesuai.

Persyaratan:

  • Baca input sebagai string (nama siswa)
  • Hapus spasi kosong dari input menggunakan .trim()
  • Buat variabel Option<String>:
    • Jika nama yang sudah di-trim tidak kosong, tetapkan Some(name.to_string())
    • Jika nama yang sudah di-trim kosong, tetapkan None
  • Gunakan ekspresi match untuk menangani kedua varian Option
  • Pada arm Some(name), cetak: Welcome, [name]!
  • Pada arm None, cetak: No name provided

Input:

  • Satu baris yang berisi nama siswa atau baris kosong

Output:

  • Jika nama diberikan: Welcome, [name]!
  • Jika nama tidak diberikan (input kosong): No name provided

Coba sendiri

use std::io;

fn main() {
    // Baca input
    let mut input = String::new();
    io::stdin().read_line(&mut input).expect("Failed to read line");
    let name = input.trim();
    
    // TODO: Buat Option<String> berdasarkan apakah nama kosong atau tidak
    
    // TODO: Gunakan ekspresi match untuk menangani kasus Some dan None, lalu tampilkan pesan yang sesuai
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler Rust online