Kata Kunci public
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Rust di Coddy. Pelajaran 9 dari 61.
Pada pelajaran sebelumnya, kamu belajar cara mengatur kode ke dalam file module yang terpisah. Namun, jika kamu mencoba menggunakan struct Player dari main.rs, kamu akan menemui error compiler. Itu karena semua yang ada di module Rust secara default bersifat privat.
Agar item dapat diakses dari luar module-nya, kamu harus menandainya secara eksplisit dengan kata kunci pub:
// player.rs
pub struct Player {
pub name: String,
pub score: u32,
}
impl Player {
pub fn new(name: String) -> Player {
Player { name, score: 0 }
}
}
Perhatikan bahwa pub muncul di beberapa tempat, pada struct itu sendiri, pada setiap field, dan pada method. Setiap item memerlukan deklarasi visibilitasnya sendiri.
Tanpa pub pada struct, file lain bahkan tidak bisa menyebutkan tipe tersebut. Tanpa pub pada field, file lain tidak bisa mengakses datanya secara langsung. Tanpa pub pada method, file lain tidak bisa memanggilnya.
Sekarang di main.rs, kamu bisa menggunakan item publik dari module tersebut:
// main.rs
mod player;
use player::Player;
fn main() {
let p = Player::new(String::from("Alice"));
println!("{}", p.name);
}
Pernyataan use membawa Player ke dalam cakupan sehingga kamu tidak perlu menulis player::Player setiap kali. Pendekatan privasi secara default ini memang disengaja. Pendekatan ini mendorong kamu untuk memikirkan dengan cermat bagian mana dari kodemu yang seharusnya terekspos ke dunia luar.
Tantangan
MudahMari buat katalog produk sederhana dengan mengatur kodemu dalam dua file dan menjadikan item yang tepat bersifat publik agar dapat digunakan dari program utamamu.
Kamu akan membuat dua file:
product.rs: Definisikan structProductdengan dua field:name(String) danprice(f64). Tambahkan fungsi terkait bernamanewyang menerima nama dan harga, lalu mengembalikanProductbaru. Ingat untuk menandai struct, field-nya, dan method-nya sebagai publik agar dapat diakses dari luar module.main.rs: Deklarasikan module product, masukkanProductke dalam cakupan dengan pernyataanuse, lalu buat sebuah produk dan cetak detailnya.
Pikirkan baik-baik di mana kamu perlu menggunakan kata kunci pub: struct itu sendiri harus terlihat, field-nya harus dapat diakses untuk dibaca, dan method konstruktor harus dapat dipanggil dari main.rs.
Output-mu harus mengikuti format persis berikut:
Product: {name}, Price: ${price}Misalnya, jika kamu membuat produk dengan nama "Laptop" dan harga 999.99, output-nya akan seperti ini:
Product: Laptop, Price: $999.99Kamu akan menerima dua input: nama produk dan harganya.
Coba sendiri
// Deklarasikan module product
mod product;
// TODO: Masukkan Product ke dalam cakupan dengan pernyataan use
fn main() {
// Baca input
let mut name = String::new();
std::io::stdin().read_line(&mut name).expect("Failed to read line");
let name = name.trim().to_string();
let mut price_input = String::new();
std::io::stdin().read_line(&mut price_input).expect("Failed to read line");
let price: f64 = price_input.trim().parse().expect("Failed to parse price");
// TODO: Buat Product baru menggunakan fungsi Product::new
// TODO: Tampilkan detail produk dalam format:
// Produk: {name}, Harga: ${price}
}
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