23- Dart Sabitler final const (immutuble-değişmez)

Yazımızın içeriğini aşağıdan video olarak izleyebilirsiniz.

Dart sabitler const final immutuble

Dart sabitler nedir?

Bugüne kadar hep değişkenleri gördük ve onları daha sonra isteğimize göre değiştirdik yeni değerler atadık. Biz her zaman bunu istemeyiz. Örneğin flutter da bir dizayn yaptığımızı düşünelim ve bir boşluk değerini 50 yerde kullandığımızı varsayalım. Bunun için bir sabit tanımlasak ve bellek dostu ve daha performanslı kod yazsak nasıl olurdu veya pi sayısını ele alalım ve programımızda bir sürü yerde kullandığımızı varsayarsak bunu bir değişkende tutmak anlamsız olacaktır. Pi sayısını hiç bir yerde değiştirmeye gerek olmayacak. Şimdi const ve final ın bazı özelliklerinden bahsederek inceleyelim.

const kelime anlamı olarak ingilizce de constant kelimesinin kısaltılmışıdır ve sabit anlamına gelmektedir. final ise sonunda demektir.

Dart const ve final arasındaki farklar;

  • const ile de final ile de sabit tanımlayabiliriz.
  • const compile time da yani programımız henüz çalışmaya başlamadığı anda kullanılacak sabitler için, final ise run time da çalışacak sabitler için tanımlanabilir. Yani programı çalıştırdığımızda anlık saat verisinin çekilmesi gibi yada internetten bir verinin gelmesi programın çalışması esnasında gerçekleşeceği için final tanımlanır.
  • Her iki tanımlamada bellek dostu ve performanslıdır.
  • const sabitler yalnızca constlarla oluşturulabilir. final ise diğer veri tiplerinden oluşturulabilir.
  • const ile bir liste oluşturduğumuzda içerisine daha sonra veri eklenemez, final da ise eklenebilir.

Yukarıda özelliklerini yazdığımız final ve const sabit tanımlama anahtarlarını aşağıda örneklerle inceleyelim.

const sabitlere sonradan değer atanamaz. Aşağıda hatalı bir işlem örneği verilmiştir.

void main(List<String> args) {
  //HATALI İŞLEM
  //const sabitler değiştirilemez.
  const int x = 2;
  x = 3;
}
dart-sabitler-const-final-immutuble-01

final sabitlere sonradan değer atanamaz. Aşağıda hatalı bir işlem örneği verilmiştir.

void main(List<String> args) {
  //HATALI İŞLEM
  //final sabitler değiştirilemez.
  final int x = 2;
  x = 3;
}
dart-sabitler-const-final-immutuble-02

const sabitlere yalnızca const değerler atanabilir. Aşağıda hatalı bir işlem örneği verilmiştir.

void main(List<String> args) {
  //HATALI İŞLEM
  //const sabitlere yalnızca const  
  //sabitler atanabilir.
   int x = 2;
   int y = 3;
  const int sonuc = x + y;
  
}
dart-sabitler-const-final-immutuble-04

Aşağıda doğrusunu yapalım. const sabitlere yalnızca const değerler atanabilir.

void main(List<String> args) {
  //DOĞRU İŞLEM
  //const sabitlere yalnızca const  
  //sabitler atanabilir.
   const int x = 2;
   const int y = 3;
  const int sonuc = x + y;
  
}
dart-sabitler-const-final-immutuble-05

final sabitlere diğer değişken tipleri atanabilir. Aşağıda örneği inceleyelim.

void main(List<String> args) {
  //DOĞRU İŞLEM
  //final sabitlere değişken tipler   
  //atanabilir.
    int x = 2;
    int y = 3;
  final int sonuc = x + y;
  
}
dart-sabitler-const-final-immutuble-06

Listelerde de durum aynıdır, aşağıdaki const ve final ile liste tanımlayıp işlem yapalım.

const tanımlanan listelere const olmayan değişkenler atanamaz, Aşağıdaki örneği inceleyelim.

void main(List<String> args) {
  //YANLIŞ İŞLEM
  //Değişkenler const olmadığı
  //için atanamaz
  int x = 2;
  int y = 3;
  const List<int> liste = [x, y];
}
dart-sabitler-const-final-immutuble-07

const tanımlanan listelere const olan değişkenler atanabilir, aşağıdaki örnekte ki gibi;

void main(List<String> args) {
  //DOĞRU İŞLEM
  
  const int x = 2;
  const int y = 3;
  const List<int> liste = [x, y];
}
dart-sabitler-const-final-immutuble-08

final da ise farklı tipte tanımlanan değişkenler final listeye atanabilir. Aşağıdaki örneği inceleyelim.

void main(List<String> args) {
  //DOĞRU İŞLEM
  
   int x = 2;
   int y = 3;
  final List<int> liste = [x, y];
}
dart-sabitler-const-final-immutuble-09

final listelere eleman eklenip çıkarılabilir, aşağıdaki örneği inceleyelim.

void main(List<String> args) {
  //DOĞRU İŞLEM
  //final tanımlı listelere ilave
  //eleman eklenip çıkarılabilir

  int x = 2;
  int y = 3;
  final List<int> liste = [x, y];
  liste.add(4);
  print(liste);
}
//SONUÇ
//[2,3,4]
dart-sabitler-const-final-immutuble-10

const listelere eleman eklenip çıkarılamaz, aşağıdaki örneği inceleyelim.

Aşağıdaki örnekte run time ve compile time ile ilgili örnek yapalım. const sabitler compile time için tanımlanır, henüz kodlar çalışmaya başlamadan önce, final sabitler ise runtime da yanı program çalışmaya başlayınca oluşturulur. Örneğin aşağıda vereceğimiz saat verisi, anlık saat verisi runtime zamanı belirlenir, programın çalışma anında.

void main(List<String> args) {
  //const compile time da çalışır
  //final ise run time da çalışır

 //HATALI İŞLEM
  const DateTime tarih = DateTime.now();
  //anlık zaman bilgisi run time da 
  //elde edilecek bir veri. o yüzden
  //const tanımlanamaz

  //DOĞRU İŞLEM
  final DateTime tarih2 = DateTime.now();
  //final run time da çalıştığı
  //için zaman bilgisi oluşturulabilir.
  
}
dart-sabitler-const-final-immutuble-12

2 thoughts on “23- Dart Sabitler final const (immutuble-değişmez)”

Yorum bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir