Pengantar Blok Implementasi
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Rust di Coddy. Pelajaran 1 dari 61.
Di Rust, struct menentukan data apa yang dimiliki suatu tipe, tetapi tidak menentukan apa yang bisa dilakukan tipe tersebut. Untuk memberikan perilaku pada struct, kita menggunakan blok implementasi dengan kata kunci impl.
Blok implementasi menghubungkan fungsi (yang disebut method) ke struct tertentu. Berikut struktur dasarnya:
struct Dog {
name: String,
age: u8,
}
impl Dog {
fn bark(&self) {
println!("{} says woof!", self.name);
}
}
Blok impl Dog memberi tahu Rust bahwa semua yang ada di dalamnya termasuk dalam struct Dog. Pemisahan ini menjaga definisi datamu tetap rapi sekaligus memungkinkan kamu menambahkan sebanyak mungkin method di blok implementasi.
Untuk memanggil method, gunakan notasi titik pada instance:
fn main() {
let my_dog = Dog {
name: String::from("Rex"),
age: 3,
};
my_dog.bark(); // output: Rex says woof!
}
Pola pemisahan data (struct) dari perilaku (blok impl) ini merupakan dasar untuk mengatur kode Rust. Dalam pelajaran berikutnya, kita akan mempelajari cara method mengakses data struct melalui parameter &self yang kamu lihat pada contoh di atas.
Tantangan
MudahBuat struct Cat dengan dua field: name (String) dan lives (u8).
Tambahkan blok implementasi untuk Cat dengan method bernama meow yang menerima &self dan mencetak nama kucing diikuti " says meow!".
Kamu akan menerima dua input:
- Baris pertama: nama kucing (String)
- Baris kedua: jumlah nyawa (u8)
Buat instance Cat dengan nilai yang diberikan dan panggil method meow padanya.
Format output yang diharapkan:
{name} says meow!Coba sendiri
use std::io;
// TODO: Definisikan struct Cat dengan field 'name' (String) dan 'lives' (u8)
// TODO: Tambahkan blok implementasi untuk Cat dengan method 'meow'
fn main() {
let mut name = String::new();
io::stdin().read_line(&mut name).expect("Failed to read line");
let name = name.trim().to_string();
let mut lives_input = String::new();
io::stdin().read_line(&mut lives_input).expect("Failed to read line");
let lives: u8 = lives_input.trim().parse().expect("Failed to parse lives");
// TODO: Buat instance Cat dan panggil method meow
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Method dan Perilaku
Pengantar Blok ImplementasiParameter SelfMethod MutableFungsi TerkaitBeberapa Blok ImplementasiMethod BerantaiRangkuman: Aksi Persegi Panjang4Proyek: Hewan Peliharaan Virtual
Mendefinisikan Hewan PeliharaanMemberi Makan Hewan Peliharaan2Enkapsulasi dan module
Dasar-Dasar moduleKata Kunci publicField privateGetterSetterRekap: Loker AmanLatihan sendiri: Compiler Rust online