[TR] Dart Türkçe Anlatım - Değiskenler

Dart Değişkenler


Merhabalar, bu yazıda elimden geldiğince Dart diline giriş yapmaya çalışacağım. Bu konuda biraz Türkçe kaynak eksikliğinden ötürü böyle bir giriş yapmak istedim. Umarım dilim İngilizce’ye kaymaz ama bazı terimlerin Türkçe karşılığı çok eğreti olduğundan onları İngilizce kullanacağım. :d Neyse başlayalım.

Static Typing

Dart’da variablelar (değişkenler) ikiye ayrılıyor. Statik ve dinamik. Normalde Dart static-typed bir dil. Değişkenlerin tipini belirlediğinizde onu değiştiremiyorsunuz.
var a = 4; // Burada a değişkenini bir sayıya eşitledik   
a = "Hello Jelly"; //Bu olmaz işte, 'a sayıdır' dediğin şeyi burada string yapamazsın.
C++, Java vs. gibi dilleri bilenler bunu zaten biliyor. Python ve JavaScript’den gelenler hadi canım diyor. Ama öyle… Şimdi bu değişkenleri tanımlarken var da kullanabiliriz ya da direk tipi neyse onu da yazabiliriz, buna tiplere gelince değineceğim.

Dynamic Typing

Şimdi Dart bize bir güzellik yapıp dynamic variable desteği de sunmasına bakalım. Bu ne demek derseniz, eğer bir değerin tipi ne olacak bilmiyorsak, dynamic olacak diyoruz. Bunun En büyük örneği olarak JSON objelerini gösterebiliriz. Bize network üzerinden bir JSON dosyası geldi diyelim. Türlü türlü JSON var.
[   "Bala",   1,   "Bana"   ]   
{   key1: "Selom",   key2: 3,   key3: ["Kopek", "Kedi"]   }
Şimdi size network üzerinden bu ikisi de gelebilir o yüzden JSON objesi için statik bir tip veremezsiniz. Onun tipi neyse program çalışırken ortaya çıkar. Bu tür durumlarda dynamic kullanıyoruz
dynamic nameOrAge = "Selami";   
dynamic someObject = {"ad": "Kamuran", "soyad": "Gıdıllı"};

Initializing

Bu terimleri Türkçe yapmak gerçekten zor ya. Initialize değişkene ilk değerini atamak demek basitçe. Eğer o değişkene bir değer atamazsanız, o değişken’e null atanır. Null dediğimiz şey ise özetle yokluk, hiçlik.
var name; // Name diye bir değişken yarattınız ama hiçbir şey atamadığınız için şu an bu değişken _null_ oldu. 
name = "Hikmet"; //dediğiniz an name değişkeni artık "Hikmet" yazısını içerir oldu. 
Yukarıdaki iki satırlık şeyi tek satırda da yapabilirsiniz.
var name = "Hikmet";
var age = 53;
var isDead = false;
İlk değeri atama bundan ibaret işte. Bu konuda en sık yapılan hata şudur:
var enGencKisi; // yaş için bir değişken tanımladık.
...
...
...
var birGrupInsan = [12, 32, 54, 19, 3, 102]; // Burda bir grup insanın yaşlarının listesi var.
for(var age in birGrupInsan) // her yaşı tek tek dolaşıyoruz
{
 if(age < enGencKisi) // Eğer sectiğimiz yaş en genç kişiden küçükse
 {
  enGencKisi = age; // en genç kişi o olsun
 }
}
Yukarıdaki koddaki sorunu ilk görüşte bulan kişi bu işi kapmış zaten burda işin ne. Şimdi yukarıdaki sorun enGencKisi ye herhangi bir değer atamadınız ve enGencKisi null olarak başladı. Sonra siz age < enGencKisi derken bir sayıyı null ile karşılaştırıyor olacaksınız. Program hata verecek çünkü “12 < null” böyle bir karşılaştırma yok. O nedenle null exception alıyorsanız bilin ki initialize etmediniz bir yeri. Bu hatayı başka sebeplerle de alabilirsiniz ama şimdilik onlar kalsın.

const & final

Bunlar özetle şey demek: Sen beni değiştiremezsin. constant kelimesinin kısası. Diyelim arkadaşınızla bir program yazdınız böyle baya uzun bir program.
var pi = 3.14; //Bildiğimiz pi sayısı
Böyle bir şey tanımladınız programda, ve her yerde pi kullandınız ettiniz. Sonra sizin çılgın arkadaşınız bu nedir ne değildir anlamadı veya kendi kullandığı bir şeyle karıştırdı falan. Gitti
pi = 333; 
eşitledi ve programınız tümden mahvoldu. Ama eğer ki siz
const var pi = 3.14;
demiş olsaydınız pi’yi hiçbir güç değiştiremezdi. Özetle bu const dediğimiz şeyi daha sonradan değişmemesi gereken şeyler için kullanıyoruz. Pi gibi sabitler mesela, ya da bizim belirlediğimiz herhangi bir şey.
final dediğimiz şey ise aynı görevi görüyor. Şu aşamada const ile arasındaki farkı bilmeniz çok bir şey farkettirmeyecek, farklılığı classlarda belli oluyor. Ama özetlemek gerekirse, const ile bir değişken (artık sabit oldu değişkenliği kalmadı) tanımladığınızda program compile olurken o değeri değişkene atarken, final ile o değişken tanımlandığında program çalışırken o değeri atıyor. Performans açısından kullanabildiğiniz yerde const kullanmanızı öneririm.

Comments

Popular posts from this blog

Computer Graphics - Depth Buffer Test