Fungsi Terkait
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Rust di Coddy. Pelajaran 4 dari 61.
Tidak semua fungsi dalam blok impl perlu beroperasi pada instance yang sudah ada. Fungsi yang tidak menerima self sebagai parameter disebut fungsi terkait: fungsi tersebut terkait dengan tipe itu sendiri, bukan dengan instance tertentu.
Kegunaan paling umum dari fungsi terkait adalah membuat constructor. Berdasarkan konvensi, fungsi ini sering diberi nama new:
struct Player {
name: String,
score: u32,
}
impl Player {
fn new(name: String) -> Player {
Player {
name,
score: 0,
}
}
}
Perhatikan bahwa tidak ada parameter self. Fungsi ini tidak memerlukan Player yang sudah ada agar bisa berfungsi. Sebaliknya, fungsi ini membuat dan mengembalikan Player yang benar-benar baru. Tipe pengembaliannya adalah struct itu sendiri.
Untuk memanggil fungsi terkait, gunakan sintaks :: dengan nama tipe, bukan notasi titik:
fn main() {
let player1 = Player::new(String::from("Alice"));
println!("{} starts with {} points", player1.name, player1.score);
// output: Alice starts with 0 points
}
Pola ini menyediakan cara yang rapi untuk menginisialisasi struct dengan nilai default atau logika validasi, sekaligus menggabungkan logika pembuatannya dengan definisi tipe. Kamu mungkin sudah pernah melihat sintaks ini pada String::from(): itu juga merupakan fungsi terkait!
Tantangan
MudahBuat struct Book dengan dua field: title (String) dan pages (u32).
Tambahkan blok implementasi untuk Book dengan fungsi terkait bernama new yang:
- Menerima parameter
title: String - Mengembalikan
Bookbaru dengan judul yang diberikan danpagesdiatur ke0
Tambahkan juga method bernama info yang menerima &self dan mengembalikan String dengan format: "{title} has {pages} pages"
Kamu akan menerima satu input:
- Judul buku (String)
Gunakan fungsi terkait Book::new untuk membuat buku dengan judul yang diberikan, lalu cetak hasil pemanggilan method info.
Format output yang diharapkan:
{title} has {pages} pagesCoba sendiri
use std::io;
// TODO: Definisikan struct Book dengan field title (String) dan pages (u32)
// TODO: Tambahkan blok impl untuk Book yang berisi:
// - Fungsi terkait `new` yang menerima title dan mengembalikan Book dengan pages bernilai 0
// - Method `info` yang mengembalikan String dengan format "{title} has {pages} pages"
fn main() {
let mut input = String::new();
io::stdin().read_line(&mut input).expect("Failed to read line");
let title = input.trim().to_string();
// TODO: Gunakan Book::new untuk membuat Book dengan title yang diberikan
// TODO: Cetak hasil pemanggilan method info
}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