pub
- Rust kursu
- Orta seviye
- Ders 73/115
- 4 dk
pub ile görünürlük kontrolü yapmayı öğrenirsin.
pub
Görünürlük öğe öğe belirlenir. Struct için pub yalnızca türü açar; her alan ayrıca işaretlenmelidir. Enum'da ise pub tüm variant'ları açar:
mod banka {
pub struct Hesap {
pub sahip: String, // dışarıdan okunur/yazılır
bakiye: i64, // gizli
}
pub enum Tur { Vadesiz, Vadeli } // iki variant da açık
}Gizli alanı olan bir struct dışarıdan Hesap { .. } ile oluşturulamaz; bir kurucu (pub fn new) sunulmalıdır.
Getter ve kurucu
Gizli alanlara kontrollü erişim metotlarla verilir:
impl Hesap {
pub fn new(sahip: &str) -> Self {
Self { sahip: sahip.to_string(), bakiye: 0 }
}
pub fn bakiye(&self) -> i64 {
self.bakiye
}
pub fn yatir(&mut self, n: i64) {
if n > 0 {
self.bakiye += n;
}
}
}Modül içindeki kod, aynı modüldeki gizli alanlara her zaman erişebilir.
Uygulama Banka modülü
mod banka içinde pub sahip ve gizli bakiye alanlı Hesap yaz; new, bakiye ve yatir metotlarını ekle. main'de "Ece" için hesap açıp 50 yatır; h.sahip ve h.bakiye() değerlerini boşlukla yazdır.
Başlangıç kodu
fn main() {
// buraya yaz
}Örnek çözüm
mod banka {
pub struct Hesap {
pub sahip: String,
bakiye: i64,
}
impl Hesap {
pub fn new(sahip: &str) -> Self {
Self {
sahip: sahip.to_string(),
bakiye: 0,
}
}
pub fn bakiye(&self) -> i64 {
self.bakiye
}
pub fn yatir(&mut self, n: i64) {
if n > 0 {
self.bakiye += n;
}
}
}
}
use banka::Hesap;
fn main() {
let mut h = Hesap::new("Ece");
h.yatir(50);
println!("{} {}", h.sahip, h.bakiye());
}Beklenen çıktı
Ece 50
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bakiyeyi gizli tutmanın yararı nedir?
- Bakiye yalnızca kurallara uyan metotlarla (yatir, cek) değişebilir Doğru cevap
- Daha hızlı çalışır
- Bellek tasarrufu
- Derleyici zorunlu tutar
Açıklama: Kapsülleme değişmezleri korur: örneğin bakiye hiçbir zaman eksiye düşmesin.
2 Açık alan
pub struct Hesap {
____ sahip: String,
bakiye: i64,
}
pub struct Hesap {
pub sahip: String,
bakiye: i64,
}
Açıklama: Struct alanları ayrı ayrı pub ile açılır.
3 Öğe ve dışarıdan erişim
| Kavram | Anlamı |
|---|---|
pub sahip |
Okunur ve yazılır |
bakiye (pub yok) |
Erişilemez |
pub enum Tur |
Tüm variant'lar açık |
pub fn bakiye(&self) |
Salt okunur erişim |