Generic vs dynamic
- Dart kursu
- Orta seviye
- Ders 34/116
- 5 dk
Generic ve dynamic farkını öğrenirsin.
Generic vs dynamic
Generic, türü derleme zamanında sabitler; dynamic ise türü çalışma zamanına bırakır. İkisi de esneklik verir ama güvenlik düzeyi farklıdır.
List<int> bildirdiğinde derleyici, listenin yalnızca int tuttuğunu bilir; list.add('a') derleme hatasıdır. List<dynamic> bildirdiğinde ise her tür eklenebilir; hata ancak çalışma zamanında, erişim sırasında ortaya çıkar. Generic, hatayı erkenden yakalar; dynamic esnek ama risklidir. Kodun korunabilirliği için generic tercih edilir.
Hangisini ne zaman?
Generic, koleksiyonlar ve yardımcı metotlar için varsayılan seçimdir; tür güvenliği ve okunabilirlik sağlar. List<int>, Map<String, int> gibi bildirimler hatayı derleme aşamasında gösterir.
dynamic ise türün önceden bilinmediği durumlar içindir: harici veri kaynakları, yansıma (reflection) veya geçici prototip kodlar. Ama production kodunda dynamic son çare olmalıdır. Generic, derleyiciye ve okuyucuya sözleşme verir; dynamic bu sözleşmeyi kaldırır. Doğru seçim, güvenliği koruyan generic'dir.
Uygulama Generic pick<T> metodunu yaz
T pick<T>(List<T> items, int i) adında bir generic metot tanımla; gövdesi return items[i]; olsun. main içinde print(pick<int>([1, 2, 3], 1)); çağrısı yap.
Başlangıç kodu
// pick<T> metodunu tanımla
void main() {
// pick<int>([1, 2, 3], 1) çağır ve yazdır
}Örnek çözüm
// pick<T> metodunu tanımla
T pick<T>(List<T> items, int i) {
return items[i];
}
void main() {
print(pick<int>([1, 2, 3], 1));
}Beklenen çıktı
2
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Generic ve dynamic özelliklerini eşle
| Kavram | Anlamı |
|---|---|
Generic |
Derleme zamanı güvenlik |
dynamic |
Çalışma zamanı kontrol |
List<int> |
Tür sabit |
2 Tür güvenli liste oluştur
var ages = <____>[28, 30];
print(ages[0]);
var ages = <int>[28, 30];
print(ages[0]);
Açıklama: <int>[28, 30] tür güvenli bir List<int> üretir.
3 Hangisi daha güvenlidir?
- List<dynamic>
- List<int> Doğru cevap
- dynamic x
- var x = 5
Açıklama: List<int> türü derleme zamanında sabittir; en güvenli seçimdir.