Menu
CoddyTech

Mengakses Nilai

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

Setelah kamu menyimpan data di hash map, kamu memerlukan cara untuk mengambilnya. method .get() memungkinkanmu mencari nilai menggunakan key-nya:

let value = my_map.get("some_key");

Namun, ada detail penting yang perlu kamu pahami: .get() tidak langsung mengembalikan nilainya. Sebaliknya, method ini mengembalikan tipe Option, yaitu tipe bawaan Rust yang mewakili “sesuatu” atau “tidak ada”. Ini karena kunci yang kamu cari mungkin tidak ada di hash map.

Jika kunci ada, .get() mengembalikan Some(&value), perhatikan simbol &, yang berarti kamu mendapatkan referensi ke nilai, bukan nilainya sendiri. Jika kunci tidak ada, fungsi ini mengembalikan None:

match capitals.get("France") {
    Some(capital) => println!("The capital is {}", capital),
    None => println!("Country not found"),
}

Kamu mungkin menyadari bahwa arm match menggunakan Some(capital) tanpa & yang ditulis secara eksplisit. Ini karena Rust otomatis menangani referensi untukmu dalam konteks ini: capital tetap menyimpan referensi ke nilai tersebut, tetapi kamu tidak perlu menulis & secara eksplisit dalam pola. Pencocokan pola Rust cukup cerdas sehingga kamu bisa langsung menggunakan capital, misalnya saat mencetaknya.

Desain ini mencegah programmu crash saat kamu mencoba mengakses kunci yang tidak ada. Alih-alih menyebabkan error, Rust mengharuskanmu menangani kedua kemungkinan, menemukan nilai atau tidak menemukannya, sehingga kodemu lebih tangguh dan mudah diprediksi.

challenge icon

Tantangan

Mudah

Kamu akan menerima dua input: nama negara dan nama kota ibu kota. Buat hash map yang menyimpan nama negara sebagai kunci (tipe String) dan kota ibu kotanya sebagai nilai (tipe String). Masukkan negara dan ibu kotanya ke dalam hash map. Kemudian, kamu akan menerima input ketiga berupa nama negara lain yang akan dicari. Gunakan method .get() untuk mengambil ibu kota negara ini, lalu tangani kedua kasus: saat negara tersebut ada di dalam map dan saat tidak ada.

Catatan: .get() mengembalikan Option, yaitu Some(&value) (referensi ke nilai) saat kunci ada, atau None saat tidak ada. Dalam arm match, kamu dapat menulis Some(capital) dan Rust akan menangani referensi tersebut secara otomatis, sehingga kamu dapat menggunakan capital secara langsung dalam pernyataan cetak.

Persyaratan:

  • Impor HashMap dari std::collections
  • Buat hash map mutable dengan tipe HashMap<String, String>
  • Baca input pertama sebagai nama negara
  • Baca input kedua sebagai nama kota ibu kota
  • Masukkan negara dan ibu kotanya ke dalam hash map
  • Baca input ketiga sebagai negara yang akan dicari
  • Gunakan .get() untuk mengambil ibu kota negara yang dicari
  • Gunakan match untuk menangani Option yang dikembalikan oleh .get()
  • Jika negara ditemukan, cetak: The capital of [country] is [capital]
  • Jika negara tidak ditemukan, cetak: [country] not found in the map

Input:

  • Baris pertama: Nama negara yang akan dimasukkan (misalnya, France)
  • Baris kedua: Nama kota ibu kota (misalnya, Paris)
  • Baris ketiga: Nama negara yang akan dicari (misalnya, France atau Germany)

Output:

  • Jika negara yang dicari ada: The capital of [country] is [capital]
  • Jika negara yang dicari tidak ada: [country] not found in the map

Coba sendiri

use std::collections::HashMap;
use std::io;

fn main() {
    // Baca nama negara yang akan dimasukkan
    let mut country = String::new();
    io::stdin().read_line(&mut country).expect("Failed to read line");
    let country = country.trim().to_string();
    
    // Baca nama ibu kota
    let mut capital = String::new();
    io::stdin().read_line(&mut capital).expect("Failed to read line");
    let capital = capital.trim().to_string();
    
    // Baca nama negara yang akan dicari
    let mut lookup_country = String::new();
    io::stdin().read_line(&mut lookup_country).expect("Failed to read line");
    let lookup_country = lookup_country.trim().to_string();
    
    // TODO: Tulis kodemu di bawah ini
    // Buat HashMap, masukkan negara dan ibu kotanya, lalu cari negara tersebut
    
}
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