Menu
CoddyTech

Memberikan Nilai Default: unwrap_or

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

Meskipun .unwrap() dan .expect() dapat mengambil nilai dari Option, keduanya memiliki kelemahan besar: keduanya menyebabkan panic saat menemui None. Untuk membuat kode lebih aman, Rust menyediakan .unwrap_or(), sebuah method yang tidak pernah menyebabkan panic.

method .unwrap_or() menerima nilai default sebagai argumen. Jika Option berisi Some, method ini mengembalikan nilai di dalamnya. Jika berisi None, method ini mengembalikan nilai default yang kamu berikan:

let maybe_score = Some(85);
let score = maybe_score.unwrap_or(0);
println!("Score: {}", score); // Menampilkan: Score: 85

let no_score: Option = None;
let default_score = no_score.unwrap_or(0);
println!("Score: {}", default_score); // Menampilkan: Score: 0

Pendekatan ini jauh lebih aman daripada .unwrap() karena programmu tidak akan pernah crash, kamu selalu mendapatkan nilai yang bisa digunakan.

challenge icon

Tantangan

Mudah

Kamu akan menerima dua input. Input pertama adalah skor (sebagai angka), dan input kedua menunjukkan apakah skor tersedia (yes) atau tidak tersedia (no). Buat variabel Option<i32> berdasarkan status ketersediaan. Gunakan .unwrap_or() untuk mengambil skor dengan aman menggunakan nilai default 50, lalu cetak skor akhir.

Persyaratan:

  • Baca input pertama (skor) dan hapus spasi di awal dan akhir
  • Parse input pertama menjadi i32
  • Baca input kedua (status ketersediaan) dan hapus spasi di awal dan akhir
  • Buat variabel Option<i32>:
    • Jika status ketersediaan adalah yes, tetapkan Some(score)
    • Jika status ketersediaan adalah no, tetapkan None
  • Gunakan .unwrap_or(50) untuk mengambil skor dengan nilai default 50
  • Cetak skor akhir dengan format: Final score: [score]

Input:

  • Baris pertama: Angka yang mewakili skor (misalnya, 85)
  • Baris kedua: yes atau no

Output:

  • Jika status ketersediaan adalah yes: Final score: [score] (skor sebenarnya)
  • Jika status ketersediaan adalah no: Final score: 50 (nilai default)

Coba sendiri

use std::io;

fn main() {
    // Baca skor
    let mut score_input = String::new();
    io::stdin().read_line(&mut score_input).expect("Failed to read line");
    let score: i32 = score_input.trim().parse().expect("Invalid number");
    
    // Baca status ketersediaan
    let mut availability = String::new();
    io::stdin().read_line(&mut availability).expect("Failed to read line");
    let availability = availability.trim();
    
    // TODO: Tulis kodemu di bawah ini
    // Buat Option<i32> berdasarkan status ketersediaan
    // Gunakan .unwrap_or(50) untuk mendapatkan skor akhir
    
    
    // Tampilkan hasilnya
    println!("Final score: {}", final_score);
}
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