Menyisipkan Pasangan Kunci-Nilai
Termasuk bagian Logika dan Alur dalam perjalanan Rust di Coddy. Pelajaran 29 dari 66.
Sekarang setelah kamu memiliki hash map kosong, saatnya menambahkan data ke dalamnya. Kamu bisa menyisipkan pasangan kunci-nilai ke dalam hash map menggunakan method .insert():
let mut capitals = HashMap::new();
capitals.insert("France", "Paris");
capitals.insert("Japan", "Tokyo");method .insert() menerima dua parameter: kunci dan nilai. Dalam contoh ini, kita menyimpan nama negara sebagai kunci dan nama ibu kotanya sebagai nilai.
Ada perilaku penting yang perlu kamu ingat: jika kamu memasukkan kunci yang sudah ada di hash map, nilai baru akan menimpa nilai lama:
capitals.insert("France", "Lyon"); // Ini menimpa "Paris"Setelah operasi ini, pencarian "France" akan mengembalikan "Lyon", bukan "Paris". Perilaku penimpaan ini membuat .insert() berguna untuk menambahkan entri baru sekaligus memperbarui entri yang sudah ada di hash map kamu.
Tantangan
MudahKamu akan menerima tiga input: nama produk, harganya (sebagai angka desimal), dan nama produk lainnya. Buat hash map yang mutable untuk menyimpan nama produk sebagai key (tipe String) dan harganya sebagai nilai (tipe f64). Masukkan produk pertama beserta harganya ke dalam hash map. Lalu masukkan produk kedua dengan harga 0.0. Terakhir, perbarui harga produk kedua menjadi 15.99 dengan memasukkannya lagi bersama harga baru. Cetak semua informasi dalam format persis seperti yang ditunjukkan di bawah.
Catatan tentang .clone(): Saat memasukkan variabel String sebagai key ke dalam HashMap, aturan ownership Rust berarti variabel tersebut akan dipindahkan ke dalam map dan tidak bisa digunakan lagi setelahnya. Agar kamu tetap bisa menggunakan variabel tersebut (misalnya, untuk mencetak atau memasukkannya lagi), panggil .clone() pada variabel itu saat memberikannya ke insert(). Contoh: map.insert(name.clone(), price).
Persyaratan:
- Impor
HashMapdaristd::collections - Buat hash map mutable dengan tipe
HashMap<String, f64> - Baca input pertama sebagai nama produk pertama
- Baca input kedua dan ubah menjadi
f64untuk harga produk pertama - Masukkan produk pertama beserta harganya ke dalam hash map dengan menggunakan
.clone()pada nama produk - Baca input ketiga sebagai nama produk kedua
- Masukkan produk kedua dengan harga
0.0menggunakan.clone()pada nama produk - Masukkan produk kedua lagi dengan harga
15.99menggunakan.clone()(ini akan menimpa nilai sebelumnya) - Cetak informasi untuk kedua produk dalam format persis seperti yang ditunjukkan di bawah
Input:
- Baris pertama: Nama produk pertama (misalnya,
Laptop) - Baris kedua: Harga produk pertama sebagai angka desimal (misalnya,
999.99) - Baris ketiga: Nama produk kedua (misalnya,
Mouse)
Output:
- Baris pertama:
Inserted [first_product] at $[price] - Baris kedua:
Inserted [second_product] at $0.00 - Baris ketiga:
Updated [second_product] to $15.99
Coba sendiri
use std::collections::HashMap;
use std::io;
fn main() {
// Baca input
let mut product1 = String::new();
io::stdin().read_line(&mut product1).expect("Failed to read line");
let product1 = product1.trim().to_string();
let mut price1_input = String::new();
io::stdin().read_line(&mut price1_input).expect("Failed to read line");
let price1: f64 = price1_input.trim().parse().expect("Failed to parse price");
let mut product2 = String::new();
io::stdin().read_line(&mut product2).expect("Failed to read line");
let product2 = product2.trim().to_string();
// TODO: Tulis kodemu di bawah ini
// Buat HashMap yang dapat diubah, masukkan produk, lalu cetak output yang diminta
}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 AkhirLatihan sendiri: Compiler Rust online