Menu
CoddyTech

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 diubah

Tanpa 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.

challenge icon

Tantangan

Mudah

Kamu 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 Player dengan field: name: String dan score: i32
  • Baca input pertama sebagai nama pemain
  • Baca input kedua dan konversikan menjadi i32 untuk skor awal
  • Buat instance mutable dari struct Player dengan nilai-nilai ini
  • Baca input ketiga dan konversikan menjadi i32 untuk skor bonus
  • Tambahkan skor bonus ke skor pemain saat ini menggunakan notasi titik
  • Baca input keempat dan konversikan menjadi i32 untuk 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
}
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