Değişkenler (Variables)
İşte bir değişken oluşturmanın ve başlatmanın bir örneği:
Değişkenler referansları depolar. isim
adlı değişken, "Bayram" değerine sahip bir String nesnesine bir referans içerir.
İsim değişkeninin türü String olarak çıkarılabilir, ancak türü belirterek bunu değiştirebilirsiniz. Eğer bir nesne tek bir türle sınırlı değilse, Object
türünü belirtin (veya gerekiyorsa dynamic
).
Başka bir seçenek de türü açıkça belirtmektir:
Null Güvenliği
Dart dilinde sağlam null güvenliği uygulanır.
Null güvenliği, null olarak ayarlanmış değişkenlere istenmeyen erişimden kaynaklanan hataları önler. Bu hata, null dereference hatası olarak adlandırılır. Null dereference hatası, bir ifadeyi null'a değerlendiren bir özelliğe veya bir yöntemi çağırdığınızda ortaya çıkar. Bu kurala bir istisna, null'un desteklediği bir özellik veya yöntem olduğunda söz konusu olabilir, örneğin toString() veya hashCode. Null güvenliği, Dart derleyicisinin bu potansiyel hataları derleme zamanında tespit etmesini sağlar.
Örneğin, bir int değişkeni i
nin mutlak değerini bulmak istediğinizi varsayalım. Eğer i
null ise, i.abs()
çağrısı bir null dereference hatasına neden olur. Diğer dillerde bu denemek runtime hatasına yol açabilir, ancak Dart derleyicisi bu eylemleri yasaklar. Bu nedenle, Dart uygulamaları runtime hatalara neden olamaz.
Bir değişken, parametre veya başka bir ilgili bileşen için bir tür belirttiğinizde, türün null'a izin verip vermediğini kontrol edebilirsiniz. Null kullanılabilirliği etkinleştirmek için tür bildiriminin sonuna bir
?
eklersiniz.
Değişkenleri kullanmadan önce başlatmalısınız. Null olabilen değişkenler varsayılan olarak null ile başlatıldığından, bunlar varsayılan olarak başlatılır. Dart, başlatılmamış bir değişkeni gözlemlemenize izin vermez. Bu, alıcı türü null olabilir, ancak null kullanılan yöntemi veya özelliği desteklemez şeklinde hatalı bir erişimi önler.
Null olabilen bir türdeki bir ifadenin özelliklerine veya yöntemlerine erişemezsiniz. Null desteklediği bir özellik veya yöntem olduğunda aynı istisna geçerli olur, örneğin hashCode veya toString().
Sağlam null güvenliği, potansiyel runtime hatalarını düzenleme zamanı analiz hatalarına dönüştürür. Null güvenliği, bir değişkenin;
Başlangıçta null olmayan bir değerle başlatılmadığında,
ya da
Null bir değer atandığında,
bu durumları kontrol eder ve bu hataları uygulamanızı dağıtmadan önce düzeltmenize olanak tanır.
Varsayılan Değer
Başlatılmamış null olabilen türdeki değişkenlerin başlangıç değeri null'dir. Hatta sayılar gibi türlerin de başlangıçta null olmasının nedeni, Dart'ın her şeyin nesne olduğu bir dil olmasıdır.
Not
Üretim kodu assert() çağrısını görmezden gelir. Bununla birlikte, geliştirme sırasında assert(şart) şartı yanlışsa bir istisna fırlatır. Ayrıntılar için Assert bölümüne bakın.
Null güvenliği ile, null olmayan değişkenlerin değerlerini kullanmadan önce başlatmalısınız:
Bir yerel değişkenin tanımlandığı yerde başlatılmasına gerek yoktur, ancak kullanılmadan önce bir değer atanmalıdır. Örneğin, aşağıdaki kod geçerlidir çünkü Dart, satirSayisi'nı print() fonksiyonuna geçirildiği noktada satirSayisi'nın null olmadığını algılayabilir:
Late Değişkenler
Late değişken belirleyici (modifier), iki kullanım durumuna sahiptir:
Değişkenin bildiriminden sonra başlatılan bir boş olmayan değişkeni belirtme.
Bir değişkeni tembellikle başlatma.
Eğer bir değişkenin kullanılmadan önce ayarlandığından eminseniz, ancak Dart bu konuda anlaşmazlık yaşıyorsa, değişkeni late
olarak işaretleyerek hatayı düzeltebilirsiniz:
Genellikle Dart'ın kontrol akış analizi, bir boş olmayan değişkenin kullanılmadan önce bir boş olmayan bir değere ayarlandığını algılayabilir, ancak bazen analiz başarısız olur. İki yaygın durum, üst düzey değişkenler ve örnek değişkenlerdir: Dart genellikle bunların ayarlanıp ayarlanmadığını belirleyemez, bu yüzden denemez.
Not
late
değişkeni başlatmayı unutursanız, değişken kullanıldığında çalışma zamanında bir hata oluşur.
Bir değişkeni late
olarak işaretlediğinizde, ancak değişken kullanıldığında ilk kez başlatılır. Bu tembel başlatma, birkaç durumda kullanışlıdır:
Değişken muhtemelen gerekli değildir.
Bir örnek değişkenini başlatıyorsanız ve başlatıcı bu değişkene erişime ihtiyaç duyuyorsa.
Aşağıdaki örnekte, sıcaklık değişkeni hiç kullanılmazsa, zahmetli termometreGetir()
fonksiyonu hiç çağrılmaz:
Final ve Const
Eğer bir değişkeni asla değiştirmeyi düşünmüyorsanız, var yerine final veya const kullanın. Bir final değişkeni yalnızca bir kez ayarlanabilir; bir const değişkeni derleme zamanında sabittir. (Const değişkenler örtük olarak finaldir.)
Not
Örnek değişkenleri final olabilir, ancak const olamaz.
İşte final bir değişken oluşturma ve ayarlama örneği:
Bir final değişkeninin değerini değiştiremezsiniz:
Sabit bir değere sahip olmasını istediğiniz değişkenler için const kullanın. Eğer const değişkeni sınıf düzeyinde kullanıyorsanız, onu static const
olarak işaretleyin. Değişkeni bildiğiniz yerde, değeri bir derleme zamanı sabiti olarak ayarlayın; bu bir sayı veya string literali, bir const değişkeni veya sabit sayılar üzerinde yapılan bir aritmetik işlemin sonucu olabilir:
Const anahtar kelimesi sadece sabit değişkenlerin deklarasyonu için değil, aynı zamanda sabit değerler oluşturmak ve sabit değerler yaratan yapıcıları deklare etmek için de kullanılabilir. Herhangi bir değişken, bir sabit değere sahip olabilir.
Const deklarasyonunun başlatma ifadesinden const'ı atlayabilirsiniz, örneğin baz'da olduğu gibi. Detaylar için, Const'ı gereksiz yere kullanma başlığına bakın.
Bir non-final (final olmayan), non-const (const olmayan) değişkenin değerini değiştirebilirsiniz, hatta başlangıçta const bir değeri olduğu halde:
Ancak, const bir değişkenin değerini değiştiremezsiniz:
Tip kontrol ve dönüşümleri (is ve as), koleksiyon if, ve yayılma operatörleri (... ve ...?) kullanarak tür kontrolü yapan ve dönüşüm yapan sabitler tanımlayabilirsiniz:
Not
Bir final nesnesi değiştirilemez, ancak alanları değiştirilebilir. Buna karşılık, bir const nesnesi ve alanları değiştirilemez: bunlar değişmezdir.
Daha fazla bilgi için, Const, Final, List, Maps ve Class (Sınıflar) başlıklarını ziyaret edin.
Last updated