Latihan 1 dari materi Traits di Rust di Rust — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Di belakang kedai ada kucing dan anjing penjaga, dan masing-masing harus bisa memperkenalkan diri. Editor sudah berisi trait Hewan dengan method wajib fn suara(&self) -> String;, unit struct struct Kucing; dan struct Anjing;, dan fn main() yang masih kosong. Biarkan semuanya, lalu:
Di dalam trait Hewan, di bawah suara, tambah default method fn perkenalan(&self) -> String yang mengembalikan format!("Saya adalah hewan dan bilang: {}", self.suara()).
Tulis impl Hewan for Kucing dengan fn suara(&self) -> String yang mengembalikan String::from("meow").
Tulis impl Hewan for Anjing dengan suara yang mengembalikan String::from("guk"). Keduanya gak menulis perkenalan, jadi memakai default-nya.
Di main, buat let kucing = Kucing; dan let anjing = Anjing;, lalu cetak println!("{}", kucing.perkenalan()); dan println!("{}", anjing.perkenalan());.
Klik Jalankan.
Output-nya:
Saya adalah hewan dan bilang: meow
Saya adalah hewan dan bilang: guk
Yang diperiksa: output memuat meow dan guk; kode-mu punya impl Hewan for Kucing dan impl Hewan for Anjing; lalu checker menambah hewan uji yang suara-nya "brr": suara() harus memberi brr, dan perkenalan() harus memberi Saya adalah hewan dan bilang: brr. Jadi perkenalan harus memakai self.suara(), bukan teks yang ditulis mati.
Hint
Trait itu janji: suara wajib ditulis tiap hewan, sedangkan perkenalan ditulis sekali di trait sebagai default dan dipakai semua hewan. Default-nya boleh memanggil self.suara(), jadi tiap hewan memperkenalkan suaranya sendiri.
Tambah fn perkenalan(&self) -> String { ... } berisi format!(...) di dalam trait Hewan. Lalu tulis dua blok impl Hewan for Kucing { ... } dan impl Hewan for Anjing { ... }, masing-masing cuma berisi fn suara. Di main, buat nilainya dengan Kucing dan Anjing (unit struct, tanpa kurung kurawal).
trait Hewan {
fn suara(&self) -> String;
fn perkenalan(&self) -> String {
format!("Saya adalah hewan dan bilang: {}", self.suara())
}
}
impl Hewan for Kucing {
fn suara(&self) -> String {
String::from("meow")
}
}
impl Hewan for Anjing {
fn suara(&self) -> String {
String::from("guk")
}
}
</>{ }.css=>#idfn()
Versi baru
HyperSheets
bagian dari BelajarWeb.dev
0%
Membuka gerbang…
HyperSheets
Memperbarui Aplikasi
Versi baru tersedia. Halaman akan dimuat ulang otomatis...