Struct yang Dapat Diubah
Termasuk bagian Logika dan Alur dalam perjalanan Rust di Coddy. Pelajaran 23 dari 66.
Secara default, instance struct di Rust bersifat tidak dapat diubah. Setelah kamu membuatnya, kamu tidak dapat mengubah nilai field-nya. Namun, seperti variabel lainnya, kamu dapat membuat instance struct dapat diubah dengan menambahkan kata kunci mut saat mendeklarasikannya.
Saat mendeklarasikan instance struct sebagai mutable, kamu dapat mengubah field mana pun menggunakan notasi titik:
let mut player = Player {
name: String::from("Alice"),
score: 0,
};
player.score = 100; // Ini berhasil karena player dapat diubahTanpa kata kunci mut, upaya untuk mengubah sebuah field akan menyebabkan error kompilasi. Mutabilitas berlaku untuk seluruh instance struct, kamu tidak dapat membuat field tertentu mutable sementara field lainnya tetap immutable.
Tantangan
MudahKamu akan menerima empat input: nama pemain, skor awal (sebagai bilangan bulat), skor bonus yang akan ditambahkan (sebagai bilangan bulat), dan penyesuaian skor akhir (sebagai bilangan bulat). Definisikan struct Player dengan dua field: name bertipe String dan score bertipe i32. Buat instance mutable dari struct ini, lalu ubah field skor beberapa kali menggunakan nilai input.
Persyaratan:
- Definisikan struct
Playerdengan field:name: Stringdanscore: i32 - Baca input pertama sebagai nama pemain
- Baca input kedua dan konversikan menjadi
i32untuk skor awal - Buat instance mutable dari struct
Playerdengan nilai-nilai ini - Baca input ketiga dan konversikan menjadi
i32untuk skor bonus - Tambahkan skor bonus ke skor pemain saat ini menggunakan notasi titik
- Baca input keempat dan konversikan menjadi
i32untuk penyesuaian akhir - Tambahkan penyesuaian akhir ke skor pemain saat ini
- Cetak informasi pemain dengan format persis seperti yang ditunjukkan di bawah
Input:
- Baris pertama: Nama pemain (misalnya,
Alice) - Baris kedua: Skor awal sebagai bilangan bulat (misalnya,
50) - Baris ketiga: Skor bonus sebagai bilangan bulat (misalnya,
30) - Baris keempat: Penyesuaian akhir sebagai bilangan bulat (misalnya,
20)
Output:
- Baris pertama:
Player: [name] - Baris kedua:
Final Score: [score]
Coba sendiri
use std::io;
// TODO: Definisikan struct Player di sini dengan field name dan score
fn main() {
// Baca nama pemain
let mut name = String::new();
io::stdin().read_line(&mut name).expect("Failed to read line");
let name = name.trim().to_string();
// Baca skor awal
let mut initial_score = String::new();
io::stdin().read_line(&mut initial_score).expect("Failed to read line");
let initial_score: i32 = initial_score.trim().parse().expect("Invalid number");
// Baca skor bonus
let mut bonus = String::new();
io::stdin().read_line(&mut bonus).expect("Failed to read line");
let bonus: i32 = bonus.trim().parse().expect("Invalid number");
// Baca penyesuaian akhir
let mut adjustment = String::new();
io::stdin().read_line(&mut adjustment).expect("Failed to read line");
let adjustment: i32 = adjustment.trim().parse().expect("Invalid number");
// TODO: Buat instance Player yang dapat diubah
// TODO: Tambahkan skor bonus ke skor pemain
// TODO: Tambahkan penyesuaian akhir ke skor pemain
// TODO: Cetak output dengan format 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