void main() {
/*
Değişken tanımlarken neler görmüştük. String int bool ve double. Şöyle de bir sistem var aslında. Değişken tanımlarken var diye bir terim kullanırsak bu değişkene biz ne değer verirsek ilk aldığı değer hangi tip bir veri ise değişken türü o veri tipi oluyor.
*/
/*
Aşağıdaki satırları teker teker inceleyelim. Her biri için alt satırında kısa kısa notlar yazayım. Okuması daha kolay olacaktır. Bir aşağıya bir yukarıya gidip gelmeye gerek kalmaz. :)
*/
String userName = "Mehmet";
/*
Yukarda klasik bir string tanımladık. String bir değişken tanımlayacaksak zaten bu şekilde tanımlıyoruz. Değerini girerken tırnak işareti kullanıyoruz.
*/
/*
Şimdi aşağıda değişken tanımlarken var kelimesini kullandık. Değişkenin değerini girerken tırnak işaretlerini kullandık. String demedik ama sistem onun string olduğunu anladı. Kod yazdığınız editörde fare ile değişken isminin üzerine gelirseniz bilgilendirme menüsü çıkıyor. Ve orada bu değişkenin tipi string'tir diyor. Bir değişkenin hangi türde veriyi tuttuğunu şu şekilde de anlayabiliriz.
Buna ve benzer diğer fonsiyonlara ilerde değineceğiz ama şimdilik konu geldiği için değinelim. Değişken türlerinin hepsinin ortak ve kendine özel fonksiyonları var. Bunlardan biri runtimeType isimli fonksiyondur. Bu fonksiyon çalışma anında hangi değişken için kullanılırsa o değişkenin tipini bize text olarak dönüyor. Kullanımı şu şekilde değişken isminden sonra . nokta işaretini koyunca bir menü açılıyor. Oradan runtimeType'ı seçiyoruz. Yada kendiniz elle de yazabilirsiniz. Direkt print içinde şu şekilde kullanılıyor. print(KullanciAdi.runtimeType); Tırnaksız bir şekilde kullanılıyor. Çıktı olarak değişken tipini dönüyor. Aşağıda örneğini ekledim.
Ayrıca işlemin doğru bir işlem olduğunu şöyle anlarız ki sistem hata vermiyor :) Tiple ilgili değil bir önceki cümle. Yanlış anlaşılmasın.
*/
var KullanciAdi = "Ahmet";print(KullanciAdi.runtimeType); //String
/*
İnt için deneyelim aşağıda. Bu genel değişken tanımlama ve aynı satırda değer atama işlemi. aSayisi'ni direkt int türünde tanımladık. runtimeType yapınca int dönüyor sistem.
Hemen devamında var ile bSayisi tanımlayıp değerini tam sayı olarak girdiğimizde bu tanımlama için runtimeType yapınca yine int döndüğünü görebiliriz. Sistem ilk girilen değerin hangi veri tipi olduğunu anlıyor ve o değişkenin tipi artık o veri tipi oluyor.
*/
int aSayisi = 5;print(aSayisi.runtimeType); //intvar bSayisi = 3;print(bSayisi.runtimeType); //int
/*
Şimdi de aşağıda hem double hem de bool tipleri için deneme yapalım.
*/
var onda = 3.5;print(onda.runtimeType); //doublevar bools = 5 < 3;print(bools.runtimeType); //bool
/*
Aslında yukardaki örneklerde veri tipi sabitlendikten sonra aynı değişkene başka türde bir veri giremeyiz. Sistem hata verecektir. Var burada sadece ilk veriden tipi anlıyor.
Ancak sonrasında o değişken o veri tipinden başka bir değeri kabul etmiyor. Aşağıda deneyelim. birSayi isminde bir değişkeni var ile tanımlayıp içine tam sayı bir değer olarak 10 girdim. Ne oldu şimdi. Bu değişkenin tipi int olarak sabitlendi.
Hemen alt satırında birSayi=10.0 diye değer atamaya çalıştım ve sistem altını çizdi. Yani diyor ki bu değişken tipi ilk önce tam sayı bir değer aldığı için sen ona daha sonra başka türde bir veri giremezsin. Lütfen ısrar etme :) Çift bölü yorum işaretlerini silerseniz hatayı sizde görebilirsiniz. Bunu burada belirttim çünkü böyle davranmayan bir veri tipimiz de var. Biraz daha aşağıda ona da değineceğiz.
*/
var birSayi = 10;//birSayi = 10.0;
/*
Burada bilinmeli ki var kullanMAMAK genel olarak daha iyi en azından başlangıç aşamalarında. Kodu biz veya başkaları okurken daha zor olur var kullanırsak. Değişken değerlerini biz burada direkt veriyoruz ve görüyoruz aslında ne olduğunu ama büyük programlarda değişkenler hemen değer almayabiliyorlar.
var ile ortaya birkaç değişken tanımlıyorsun ve sisteme değişken değerleri örneğin api ile geliyor olabilir. İlk değer almada problem olmadığı için yanlış bir değeri yanlış bir değişkene bağlarsan program olarak bir hata ile karşılaşmazsın. Ama sonra sistem patlayacaktır. Bunu büyük projelerde bulmak zorluk çıkarabiliyor. Bulmak ve takibini yapmak vb.
Ve kodun derlenmesi aşamalarında muhakkak farklar oluyordur tabi çok büyük projelerde. Bellekle ilgili durumlarda var. Programın hızıyla ilgili de durumlar oluyor. İlerledikçe göreceğiz artık neyin ne olduğunu tam olarak :)
*/
/*
Dynamic veri tipine bakalım şimdi de. Dynamic veri tipinin en önemli özelliği her zaman her türlü veri tipini alabilmesinin yanında sonrasında her türlü veri tipine dönüşüm sağlayabilmesidir. Aşağıda bir adet değişir diye bir değişkeni tipi dynamic olacak şekilde tanımladık. ilk önce int sonra string sonra double ve en sonunda da bool tipinde değerler atadık değişkenimize. Ve hepsinin tipini kontrol ettik. Her kontrolde tipin değiştiğini hayretle gördük. Şaka şaka hayret etmedik :) Bu veri tipinin özelliği bu zaten. Hangi tiple başladığının bir önemi yok. Programın akışında duruma göre değişkene
istediğimiz tiplerde veri atayabiliyoruz.
*/
dynamic degisir;degisir = 10;print(degisir.runtimeType); //intdegisir = "string oluyorum";print(degisir.runtimeType); //Stringdegisir = 10.5;print(degisir.runtimeType); //doubledegisir = true;print(degisir.runtimeType); //bool
/*
Dynamic veri tipinde şöyle sıkıntılar olabiliyor. Biz değişkene int tipinde bir değer verdik. Değişkeni işlemlere soktuk int olarak. Sonra daha aşağıda ona bir String değer atadık ve yine işlemlere soktuk. Sonra double döndük. Ben bile bu satırları yazarken ne oluyoruz hayırdır diyorum.
İşte bunun gibi karma karışık bir işlemler zinciri oluşabiliyor. Onlarca dosya ve yüzlerce satırdan oluşan bir kodumuz bile olsa yani daha fazlaya gerek bile yok bu kodda bile bu değişken hangi satırlarda tipini değişti hangi dosyalarda hangi tipte bilmek anlamak tam bir çorba oluyor ilerde.
Hele o koda üzerinden biraz zaman geçtikten sonra bakarsanız hepten tükenirsiniz. İnsanlar apaçık yazdıkları kendi kodlarını bile anlamak için ne kadar çaba sarf ediyorlar. Böyle bir durumu çözmek gerçekten büyük bir iş yükü oluyor. Kodu sıfırdan yazmış kadar oluyor kişiler.
Birde düzenli disiplinli bir kod yazılmamışsa daha vahim durum. Bunlara da ilerde değineceğin. Kod yazmanın da bazı metotları var. Böyle diyorum ama şu da var.
Bazen de o değişkenin tipi öyle değişken olmaz ise o veri tipinden bu veri tipine yani ilgili program yazılamaz oluyor. Zaten böyle bir değişken türü varsa demek ki buna bir ihtiyaç vardı ki böyle bir tür üretildi.
Şimdi diyeceksiniz bir öyle bir böyle konuşma :). Aslında demek istediğim yazılımı yaparken ne gerekiyorsa o şekilde hareket etmek gerekiyor. Normal değişken gerekli ise o kullanılmalı, var gerekli ise var, dynamic gerekli ise dynamic. Hava olsun diye adım atarsanız sonra havanızı alabilirsiniz. :)
*/
}
Sadece Kodlar
void main() {String userName = "Mehmet";var KullanciAdi = "Ahmet";print(KullanciAdi.runtimeType); //Stringint aSayisi = 5;print(aSayisi.runtimeType); //intvar bSayisi = 3;print(bSayisi.runtimeType); //intvar onda = 3.5;print(onda.runtimeType); //doublevar bools = 5 < 3;print(bools.runtimeType); //boolvar birSayi = 10;//birSayi = 10.0;dynamic degisir;degisir = 10;print(degisir.runtimeType); //intdegisir = "string oluyorum";print(degisir.runtimeType); //Stringdegisir = 10.5;print(degisir.runtimeType); //doubledegisir = true;print(degisir.runtimeType); //bool}
Categories:
Dart Programlama Dili
Index
0 comments:
Soru, Görüş, Öneri ve Eklemek İstediklerinizi Yazabilirsiniz...