skip to Main Content
Değişkenler Ve Değişken Türleri – 2

Değişkenler ve Değişken Türleri – 2

Merhabalar, Dart dilinde değişken türlerini ve kullanımını birinci bölümde detaylı bir şekilde inceledik. Bu bölümde ise sabitler, dinamik türler üzerinde konuşacağız.

Sabit ifadeler değiştirilemeyen ve uygulama boyunca aynı değeri veya referansı taşıyan değişkenlerdir. Dart programlama dilinde sabit bir ifade tanımlamak için iki yol mevcuttur. (final ve const)

final: Uygulama çalışma sırasında oluşturulan sabit türdür. Final değişkeninin değeri sabit olarak doğrudan atanabilir, ya da sınıf yapıcı metodu içerisinde değeri atanmalıdır. Bir sınıftan yeni bir nesne oluştururken bu sabit değer gönderilerek değer atanabilir. Fakat bu değer atandıktan sonra değiştirilemez.

// Varsayılan olarak değer ataması yapılmıştır.
final firstName = "izzet";
final String lastName = "öztürk";
final var lastName2 = "öztürk"; // Derleme hatası, final ile örtülü dinamik tür olan var değişkeni aynı anda kullanılamaz.

// Yapıcı metod içerisinde değer ataması yapılmıştır.
class TestClass {
  final String name;
  TestClass(this.name);
}

const: Uygulamada derleme sırasında oluşturulan ve değerleri atanan sabit türlerdir.  Bu değişken oluşturulurken değer ataması yapılır. Daha sonra bu değer değiştirilemez.

const number1 = 100;
const bool isHidden = false;
const var texture = "test"; // Derleme hatası, const ile örtülü dinamik tür olan var değişkeni aynı anda kullanılamaz.

isHidden = true; // Hata, const türünde değişkenlere çalışma zamanında değer ataması yapılmaz.

varVariable’ın kısaltması olarak oluşturulmuş bir değişken türüdür.  Bir değişken var olarak tanımlanmış ise, ona tür bağımsız herhangi bir değer atanabilir.(int, String, bool, custom vb.). Bu değişkenin türü çalışma anında veya derleme anında belirlenir. Bu ise pek tavsiye edilen bir yöntem değildir. Dart kaynaklarında değişken türü biliniyor ise, doğrudan bu tür ile tanımlanmasının daha doğru olduğu savunulmuştur.

var firstName = "İzzet";
var age = 66;
var skills = ["fast", 999, false];

dynamic: Bir değişkenin türü çalışma anında değişebiliyorsa veya türünü bilmediğimiz bir değişken ise bu tür kullanılmaktadır.

// Tür String atandı
dynamic value = "Dynamic Value"; 

// Tür int oldu.
value = 3; 

// Tür bool oldu.
value = false;

// Tür List oldu 
value = ["change", false, value];
This Post Has One Comment
  1. “final” ifadesi yerine “readonly” daha alışılmış bir ifade olabilirmiş çatı için.
    İlk başta nasıl bir kolaylık sağladığı anlaşılamıyor.

    Yani C# benzer bir şey yapmak istesem genel için “const” sınıf için ise bir özellik ekleyerek atamasını “private” olarak tanımlayabiliriz fakat yine tam olarak oturmuyor.

    Sınıf içerisindeki ilk atama sonrasında değiştirilememe – sınıf dışında değiştirilememe “singleton” gibi tek örnek yapıları için ideal gibi görünse de bellek yönetimi ve nesne özellikleri üzerine kalıtım (örneğin bu değişkene atanan bir sınıfın bellekten nasıl atılacağı ve özelliklerinin değiştirmeye açık olup olmadığını merak ediyorum.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir