CodeBlanks Logo Icon CodeBlanks

Extension method

Extension method yazmayı öğrenirsin.

Extension method

Extension method, bir extension içinde tanımlanan metottur. Hedef türün bir örneği üzerinden this ile erişilir. extension StringRepeat on String { String repeat(int n) => ... } tanımı, 'ab'.repeat(3) çağrısını sağlar.

Extension metotları, sınıf metotları gibi kullanılır. Ancak override edilemezler ve alt sınıflarda değiştirilemezler. Çünkü extension'lar derleme anında statik olarak çözümlenir; bu nedenle dinamik dispatch (polymorphism) yoktur.

this ve extension

Bir extension metodunun içinde this, metodun çağrıldığı örneğe işaret eder. extension on int { int doubled() => this * 2; } tanımında this çağrılan int değeridir. 5.doubled() çağrısında this 5'tir.

Extension metodları aynı kapsamdaki diğer metotları çağırabilir. Ayrıca extension içinde birden çok metot tanımlanabilir. Extension adı yalnızca belgeleme ve çakışma önleme içindir; çağrıyı etkilemez.

Uygulama ListSum extension

Bir ListSum extension'ı tanımla: on List<int> olsun ve int total() => fold(0, (a, b) => a + b); metodu içersin. main içinde print([1, 2, 3].total()); çağrısını ekle.

Başlangıç kodu

main.dart
void main() {
  // ListSum extension'ını tanımla (on List<int>; total metodu)
  // [1, 2, 3].total() yazdır
}

Örnek çözüm

main.dart
extension ListSum on List<int> {
  int total() => fold(0, (a, b) => a + b);
}

void main() {
  print([1, 2, 3].total());
}

Beklenen çıktı

6

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Extension metodu çağrısı

Soru
final result = 'ab'.____(3);
print(result);
Cevap
final result = 'ab'.repeat(3);
print(result);

Açıklama: 'ab'.repeat(3) extension metodunu çağırır.

2 Extension metotları nasıl çözümlenir?

  • Derleme anında statik Doğru cevap
  • Yalnızca alt sınıfta
  • Çalışma anında dinamik
  • Hiç çözümlenmez

Açıklama: extension metotları derleme anında statik olarak çözümlenir.

3 Extension metod parçalarını eşleştir

Kavram Anlamı
this Çağrılan örnek
on Type Hedef tür
static Çözümleme biçimi
override Geçersiz

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