Extension nedir?
- Dart kursu
- Uzman
- Ders 19/47
- 5 dk
Dart extension kavramını öğrenirsin.
Extension nedir?
Extension, var olan bir türe (sınıfa, kayda, listeye) yeni metotlar veya özellikler eklemeyi sağlar. Alt sınıf oluşturmadan, türe dışarıdan işlev eklenir. extension StringOps on String { ... } tanımı String'e yeni metotlar katar.
Extension, özellikle kendi kontrol etmediğin türlere (kütüphane sınıfları, dart:core türleri) işlev eklemek için kullanışlıdır. Extension metotları statik olarak çözümlenir; yani derleme anında hangi metodun çağrıldığı belirlenir.
Extension sözdizimi
Bir extension, extension Name on Type { ... } biçiminde tanımlanır. Name extension'ın adı, Type genişletilen türdür. Süslü parantezler içinde metotlar, getter'lar ve setter'lar tanımlanır.
Örneğin extension NumberOps on int { int square() => this * this; }, int'e square() metodunu ekler. Kullanımı 5.square() şeklindedir. Extension adı çakışmaları önlemek içindir; kodu etkilemez.
Uygulama StringEcho extension
Bir StringEcho extension'ı tanımla: on String olsun ve String echo() => '$this $this'; metodu içersin. main içinde print('Merhaba'.echo()); çağrısını ekle.
Başlangıç kodu
void main() {
// StringEcho extension'ını tanımla (on String; echo metodu)
// 'Merhaba'.echo() yazdır
}Örnek çözüm
extension StringEcho on String {
String echo() => '$this $this';
}
void main() {
print('Merhaba'.echo());
}Beklenen çıktı
Merhaba Merhaba
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Extension ne sağlar?
- Çalışma anı tür denetimi yapar
- Yeni bir sınıf oluşturur
- Çöp toplayıcıyı değiştirir
- Var olan türe yeni metot ekler Doğru cevap
Açıklama: extension var olan türe dışarıdan yeni metot ekler.
2 Extension tanımı
extension NumberOps on ____ {
int square() => this * this;
}
extension NumberOps on int {
int square() => this * this;
}
Açıklama: extension NumberOps on int, int türüne uygulanır.
3 Extension parçalarını eşleştir
| Kavram | Anlamı |
|---|---|
extension |
Tanım anahtar sözcüğü |
on |
Hedef tür bağlacı |
Name |
Extension adı |
Type |
Genişletilen tür |