Jenerikler(Generics)​

Türbağımsızlar(Generics)

Generics dediğimiz şey aslında basittir. Anlamı türü daha sonra belirtilecek veri tipleri için kullanılan bir kavramdır yani genel veri tipi alır anlamındadır türden bağımsızlar da denebilir. Dart’daki türbağımsızlar(Generics) varsayılan olarak heterojendir(farklı veri türleri alır). Başka bir deyişle, tek bir Dart koleksiyonu çeşitli türlerdeki değerleri barındırabilir. Bununla birlikte, homojen(aynı tip veri türleri) değerleri tutmak için bir Dart koleksiyonu yapılabilir.. Generics kullanımı, koleksiyonun içerebileceği değerlerin veri türü üzerinde bir kısıtlama uygular. Bu tür koleksiyonlara güvenli tip koleksiyonlar denir. Tip güvenliği, bir bellek bloğunun sadece belirli bir veri tipinde veri içerebilmesini sağlayan bir programlama özelliğidir. Tüm Dart koleksiyonları, jenerik yöntemlerle tip güvenliği uygulamalarını destekler. Tip güvenli bir koleksiyon bildirmek için veri türünü içeren bir çift köşeli ayraç kullanılır.


Kolleksiyon Tanımlama şekli: Koleksiyon_adı<Tur> tanimlayiciadi= new Koleksiyon_adı<Tur> Örnek Generic liste List<T> ogrenciListesi = new List (); // List aslında bir generic kolleksiyondur.
//List<T> T genel türü ifade eder ve kullanımda T List<int> şeklinde sadece int alacak şekle çevrilebilir.
//Yine dynamic türü daimi bir Generic iken var geçiçi bir generiktir diyebiliriz.
//Çünkü var da ilk değer ataması yapıldığında artık atama yapılan tür sabit kalır değişmez.   void main() { List<int> numberSet = new Set(); numberSet.add(100); numberSet.add(20); numberSet.add(5); numberSet.add(60); numberSet.add(70)
}

continue

continue: aşağıya geçme ama döngüden de çıkma! dönünün başına gön.bida bida 🙂
Geçerli döngü yenilemesinde bulunduğu konumdan itibaren alttaki ifadelere geçmez ve döngünün başına geri götürür.

LList name = List();
	name.add("İzzet");
	name.add("Mehmet");

Kullanım 2  	Aşağıdaki kullanımda liste elemanları dynamic türe sahiptir. Bu yanlış bir kod değildir fakat kötü bir kullanımdır. Liste kümesindeki elemanların türü belirtilmelidir.
Kullanım 2 de tüm liste elemanları dynamic türde olduğu için, liste elemanına eklediğiniz türün kendi özel fonksiyonlarını kullanamazsınız.
Örneğin String türünün length adında, o değişkenin uzunluğunu size veren bir fonksiyonu vardır. Fakat dynamic türünde böyle bir fonksiyon size sunulmaz. 

var name = List(); 

Kullanım 1
List name = List();
		name.add("İzzet");
		name.add("Mehmet");
		 print(name[0].length); // Çıktı: 5

Kullanım 2
var name = List(); 
name.add("İzzet");
	 print(name[0].length); // Derleme hatası nedeni liste T si obje olarak atandı
						
						
						
---------------------------																
abstract class Document {
	  void printType();
	}

class Pdf implements Document {
					  @override
					  void printType() {
								 print("Pdf Document");
														  }
					}

class Word implements Document {
								  @override
								  void printType() {
						 print("Word Document");
																}
					}

class WriteGeneric {
  final T obj;
  WriteGeneric(this.obj);
  
  void printDocumentType() {
			 obj.printType();
															}
}

// Kullanımı
Pdf pdf = Pdf();
Word word = Word();
var writePdfDocument = WriteGeneric(pdf);
var writeWordDocument = WriteGeneric(word);

writePdfDocument.printDocumentType(); // Çıktı: Pdf Document
writeWordDocument.printDocumentType(); // Çıktı: Word Document

return

return ifadesi bir fonksiyonu sonlandırmak için kullanılmaktadır. Döngü içerisinde de kullanılabilir. Fakat döngüyü değil komple fonkisyonu sonlandırır. Genelde fonksiyonlarda geri değer döndürme işlemlerinde kullanılır
void main() { 
   print(factorial(6));
}  
factorial(number) { 
   if (number <= 0) {         
      // termination case 
      return 1; 
   } else { 
      return (number * factorial(number - 1));    
      // function invokes itself 
   } 
} 

Bir cevap yazın

KAPAT
%d blogcu bunu beğendi: