Menu
CoddyTech

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.

challenge icon

Tantangan

Mudah

Mari 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 struct Product dengan dua field: name (String) dan price (f64). Tambahkan fungsi terkait bernama new yang menerima nama dan harga, lalu mengembalikan Product baru. Ingat untuk menandai struct, field-nya, dan method-nya sebagai publik agar dapat diakses dari luar module.
  • main.rs: Deklarasikan module product, masukkan Product ke dalam cakupan dengan pernyataan use, 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.99

Kamu 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}
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler Rust online