Menu
Coddy logo textTech

Getter'lar

Coddy'nin Rust Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 11 / 61.

Özel alanlarla, harici kod yapınızın verilerine doğrudan erişemez. Ancak bazen başkalarının verileri değiştirme yetkisi vermeden verileri okumasına izin vermeniz gerekir. İşte getter metotları bu noktada devreye girer.

Getter, özel bir alana başvuru döndüren public bir metottur:

// wallet.rs
pub struct Wallet {
    balance: f64,
}

impl Wallet {
    pub fn new(initial: f64) -> Wallet {
        Wallet { balance: initial }
    }
    
    pub fn balance(&self) -> f64 {
        self.balance
    }
}

balance() yöntemi &self (salt okunur erişim) alır ve private alanın değerini döndürür. Rust'ta getter'lar genellikle alanın kendisinden sonra adlandırılır: get_ önekine gerek yoktur.

Artık harici kod bakiyeyi şu yöntem aracılığıyla okuyabilir:

// main.rs
mod wallet;
use wallet::Wallet;

fn main() {
    let w = Wallet::new(100.0);
    println!("Balance: {}", w.balance());  // Çalışıyor!
}

String gibi sahip olunan verileri içeren alanlar için gereksiz kopyalamadan kaçınmak amacıyla genellikle bir referans döndürürsün:

pub fn name(&self) -> &String {
    &self.name
}

Getter'lar, alanın kendisini korurken kontrollü okuma erişimi sağlar. Struct, verilerinin sorumluluğunu elinde tutar: harici kod verileri görebilir, ancak onlara dokunamaz.

challenge icon

Görev

Kolay

Özel verilere kontrollü okuma erişimi sağlayan alıcı yöntemlerin nasıl çalıştığını gösteren bir kullanıcı profili sistemi oluşturalım.

Kodunuzu düzenlemek için iki dosya oluşturacaksınız:

  • profile.rs: İki özel alana sahip bir UserProfile yapısı tanımlayın: username (String) ve age (u32). Yapının kendisi herkese açık olmalı, ancak alanlar özel kalmalıdır. Bir kullanıcı adı ve yaş alan herkese açık bir new kurucusu uygulayın. Ardından iki alıcı yöntemi ekleyin:
    • username: kullanıcı adına bir referans döndürür (&String)
    • age: yaş değerini döndürür (u32)
  • main.rs: Profil modülünüzü içe aktarın, bir UserProfile oluşturun ve kullanıcının bilgilerini yazdırmak için alıcı yöntemleri kullanın.

Rust'ta alıcıların genellikle alanın kendisinden sonra adlandırıldığını unutmayın: get_ ön ekine gerek yoktur. String alanları için gereksiz kopyalamayı önlemek amacıyla bir referans döndürün.

Çıktınız tam olarak şu biçimi izlemelidir:

Username: {username}
Age: {age}

Örneğin, kullanıcı adı "alice" ve yaşı 25 olan bir profil oluşturursanız çıktı şöyle olur:

Username: alice
Age: 25

İki girdi alacaksınız: kullanıcı adı ve yaş.

Kendin dene

mod profile;

use profile::UserProfile;

fn main() {
    let mut input1 = String::new();
    std::io::stdin().read_line(&mut input1).expect("Failed to read line");
    let username = input1.trim().to_string();

    let mut input2 = String::new();
    std::io::stdin().read_line(&mut input2).expect("Failed to read line");
    let age: u32 = input2.trim().parse().expect("Failed to parse age");

    // TODO: Yapıcıyı kullanarak bir UserProfile oluştur

    // TODO: Kullanıcı adını ve yaşı yazdırmak için getter metodlarını kullan
    // Biçim:
    // Username: {username}
    // Yaş: {age}
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online Rust derleyicisi