CodeBlanks Logo Icon CodeBlanks

Pattern matching

Dart 3 pattern matching ve destructure öğrenirsin.

Pattern matching ile destructure

Pattern matching, bir değeri parçalarına ayırır. En basit hâliyle bir record'u destructure etmek: var (a, b) = (1, 2);. Artık a 1, b 2 olur.

Aynı sözdizimi bir listeyi de ayırır: var [first, ...rest] = [10, 20, 30];. Burada first 10, rest [20, 30] olur.

Map için var {'ad': ad} = {'ad': 'Dart'}; yazabilirsin. Desen, değerin yapısını betimler; Dart eşleştirirse değişkenleri bağlar.

Liste desenleri

Bir liste deseni, listenin başını ve kuyruğu ayırır. var [first, ...rest] = [10, 20, 30]; örneğinde first liste başını, rest kalanını alır.

Sabit uzunluklu desen de mümkün: var [x, y] = [5, 9];. Burada liste tam iki elemanlı olmalıdır.

Desen uyuşmazsa Dart bir hata fırlatır. Bu yüzden desenleri, yapısı bilinen verilerde kullanırsın.

Uygulama Record destructure

main içinde var (a, b) = (3, 4); ile bir record'u destructure et. a ve b'nin toplamını print ile yazdır.

Başlangıç kodu

main.dart
void main() {
  // (3, 4) kaydını destructure et, toplamı yazdır
}

Örnek çözüm

main.dart
void main() {
  var (a, b) = (3, 4);
  print(a + b);
}

Beklenen çıktı

7

Soru ve cevaplar

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

1 var (a, b) = (1, 2); sonucu ne?

  • a = 1, b = 2 Doğru cevap
  • a = 2, b = 1
  • Derleme hatası
  • a = (1,2), b = boş

Açıklama: Desen soldan sağa eşleştirir.

2 Liste başı deseni

Soru
var [first, ____] = [10, 20, 30];
Cevap
var [first, ...rest] = [10, 20, 30];

Açıklama: ...rest kalan tüm elemanları yakalar.

3 Desen eşleştirmesi

Kavram Anlamı
var (a, b) = (1, 2); Record deseni
var [x, ...rest] = list; Liste deseni
var {'ad': ad} = m; Map deseni

Orta seviye bölümündeki tüm dersler