CodeBlanks Logo Icon CodeBlanks

Extension nedir?

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

main.dart
void main() {
  // StringEcho extension'ını tanımla (on String; echo metodu)
  // 'Merhaba'.echo() yazdır
}

Örnek çözüm

main.dart
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ı

Soru
extension NumberOps on ____ {
  int square() => this * this;
}
Cevap
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

Uzman bölümündeki tüm dersler