is_some() dan is_none()
Termasuk bagian Logika dan Alur dalam perjalanan Rust di Coddy. Pelajaran 37 dari 66.
Terkadang kamu perlu memeriksa apakah Option berisi nilai tanpa benar-benar mengambil nilai tersebut. Rust menyediakan dua method praktis untuk ini: .is_some() dan .is_none().
Kedua method mengembalikan nilai boolean, sehingga cocok digunakan dalam kondisi if:
let maybe_score = Some(85);
if maybe_score.is_some() {
println!("We have a score!");
}
if maybe_score.is_none() {
println!("No score available");
}method .is_some() mengembalikan true jika Option berisi nilai Some, dan false jika nilainya None. method .is_none() bekerja dengan cara sebaliknya, method ini mengembalikan true untuk None dan false untuk Some.
Tantangan
MudahKamu akan menerima sebuah angka sebagai input. Buat Option<i32> yang berisi Some(number) jika angkanya positif, atau None jika angkanya nol atau negatif. Gunakan .is_some() dan .is_none() untuk memeriksa Option dan mencetak pesan yang sesuai.
Persyaratan:
- Baca input dan ubah menjadi
i32 - Buat variabel
Option<i32>:- Jika angkanya positif (lebih besar dari 0), tetapkan
Some(number) - Jika angkanya nol atau negatif, tetapkan
None
- Jika angkanya positif (lebih besar dari 0), tetapkan
- Gunakan
.is_some()untuk memeriksa apakahOptionberisi nilai - Jika
.is_some()mengembalikantrue, cetak:Positive number detected - Gunakan
.is_none()untuk memeriksa apakahOptionkosong - Jika
.is_none()mengembalikantrue, cetak:No positive number
Input:
- Satu bilangan bulat (misalnya,
42,0, atau-5)
Output:
- Jika angkanya positif:
Positive number detected - Jika angkanya nol atau negatif:
No positive number
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 number: i32 = input.trim().parse().expect("Invalid input");
// TODO: Tulis kodemu di bawah ini
// Buat Option<i32> berdasarkan apakah angkanya positif
// Periksa apakah Option bernilai Some, lalu tampilkan pesan yang sesuai
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Alur Kontrol Lanjutan
Ekspresi 'match'Mencocokkan Beberapa NilaiMencocokkan RentangEkspresi 'if let'Perulangan sebagai EkspresiRangkuman, Parser Perintah Sederhana4Mengelompokkan Data dengan Struct
Apa Itu Struct?Ringkasan StructMengakses Field StructStruct yang Dapat DiubahStruct sebagai Parameter FungsiStruct TupleRangkuman: Buat Struct Buku2Pengantar Vektor
Apa Itu Vektor?Membuat VektorMenambahkan Elemen dengan pushMengakses Elemen VektorMelakukan Iterasi pada VektorIterasi MutableMenghapus ElemenRangkuman: Pelacak Skor Dasar5Pasangan Kunci-Nilai dengan Hash Map
Apa Itu Hash Map?Membuat Hash MapMenyisipkan Pasangan Kunci-NilaiMengakses NilaiMenelusuri Hash MapMemperbarui NilaiMenghapus PasanganRangkuman: Penghitung Kata8Proyek: Inventaris Barang Sederhana
Menyiapkan ProyekMenambahkan BarangMemeriksa StokMenjual BarangMenyatukan Semuanya3Daftar Tugas Baris Perintah
Penyiapan ProyekMenambahkan TugasMelihat Semua TugasMenghapus TugasKode Akhir6Menangani Ketiadaan dengan 'Option'
Apa itu 'Option'?Menggunakan 'match' dengan 'Option'is_some() dan is_none()Membuka bungkus 'Option'Metode expectMemberikan Nilai Default: unwrap_orRangkuman: Menemukan ElemenLatihan sendiri: Compiler Rust online