Skip to content

Latest commit

 

History

History
75 lines (59 loc) · 3.27 KB

baglam-sabit-statik.md

File metadata and controls

75 lines (59 loc) · 3.27 KB

Değişkenler, sabitler ve statik öğeler

⭐️ Rust programlama dilinde değişkenler aksi belirtilmediği sürece değişmez olarak kabul edildiğinden, değişken kavramıyla aslında değişken bağlamına işaret edilir. Eğer bu bağlamın değişebilir olması isteniyorsa değişken bildirilirken mut anahtar sözcüğünün kullanılması gereklidir.

⭐️ Rust statik olarak tasarlanmış bir dil olduğundan, veri türlerini derleme zamanında kontrol eder. Bu nedenle değişken tanımlarında tür bildirimi zorunlu tutulmaz. Tür bildirilmediğinde derleyici, ifade ve kullanımı kontrol ederek en olası veri türünü belirlemeye çalışır. Bununla birlikte eğer sabit ya da statik bir bağlam tanımlanıyorsa o bağlamın türü mutlaka bildirilmek zorundadır. Türler (:) iki noktanın ardından bildirilir.

Değişken bağlama

Değişken ifade edilirken bağlayıcı olarak genellikle let anahtar sözcüğü kullanılır. Bu yolla programda kullanılan isimleri bir değer yada işleve bağlamak mümkün olur.

fn main() {
  let a = true; 
  println!("a: {}", a);
  
  let b: bool = false; 
  println!("b: {}", b);
  
  let (x, y) = (1, 5); 
  println!("x: {}, y: {}", x, y);
  
  let mut z = 5; 
  println!("z: {}", z);
  
  z = 6;
  println!("Şimdiki z: {}", b);
  
  let (mut e, mut f) = (-12, 20.1);
  println!("e: {}, f: {}", e, f);
  
  e = 9;
  f = 9.9;
  println!("Yeni e: {}, yeni f: {}", e, f);
}

Bağlayıcı ifadenin sol tarafı bir model olduğundan let anahtar sözcüğü yardımıyla çok sayıda isim bir dizi değere veya işlev değerine bağlanabilir.

let (x, y, z ) = (1, 5, 10); 
  println!("x: {}, y: {}, z: {}", x, y, z);

Çoklu tanımlanan değişkenlerin ileride değiştirilmesi gerekiyorsa

let (mut x, mut y,  mut z) = (1, 5, 10);
x += x; y += y; z += z;
println!("x:{}, y:{}, z:{}", x, y, z); // x:2, y:10, z:20

Sabitler

Sabitleri tanımlamak için const anahtar sözcüğü kullanılır. Değişkenlerin aksine sabitler tür açıklaması yapılarak bildirilir. Programın ömrü boyunca yaşayan bu değişken türleri derleme sırasında değerleriyle değiştirildiğinden bellekte kalıcı adresleri bulunmaz. Bu nedenle aynı sabite yapılan farklı başvuruların aynı hafıza adresine erişeceği garanti edilmez.

fn main() {
  const S: i32 = 5;
  println!("S sabitinin değeri: {}," S);
}

Sabitler sadece varsayılan olarak değil her zaman değişmez olduklarından, sabit bildirimlerinde mut anahtar kelimesi kullanılamaz.

Statikler

Bir küresel değişken türü tanımımlanırken static anahtar sözcüğü kullanılır. Bu türler sabitlere benzemekle birlikte sabit bir adresleri bulunur. Bu türlerin her değeri için sadece bir örnek olabilir ve bu örnekler kullanılırken satır içlerine alınmazlar.

fn main() {
  static S: i32 = 10;
  println!("S global değeri: {}," S);
}

Statik öğeler genellikle kod dosyasının en üstünde işlevlerin dışında bulundurulurlar. Sabit bir türün hafıza adresine nadiren başvurulduğundan, zorunlu olmadıkça statik tür yerine sabit öğelerin kullanılması yeğlenir. Bu tercih programın optimizasyonu için de önemlidir.

static NAME: &'static str = "Apache";
print!("{}", NAME);