CodeBlanks Logo Icon CodeBlanks

Pattern matching

Dart 3 switch ifadeleri ve pattern matching'i öğrenirsin.

Pattern matching

Dart 3 ile gelen switch expression, switch'in bir ifade (değer üreten) halidir. Sonuç bir değişkene atanabilir: var name = switch (day) { "Mon" => "Pazartesi", _ => "Bilinmiyor" };.

İki önemli fark: (1) case ve iki nokta yerine => oku kullanılır; (2) break gerekmez çünkü her dal otomatik biter. _ alt çizgi, "diğer her şey" anlamına gelen wildcard desenidir; default'un yerine geçer.

Wildcard desen _

Switch expression'da _ alt çizgi, "diğer tüm değerler" anlamına gelen wildcard desenidir. default'un yerine geçer ve genelde en sona yazılır. Switch expression'da _ dalı zorunludur; aksi halde bazı değerler için sonuç üretilemez ve derleme hatası alınır.

Örnek: var t = switch (n) { 1 => "tek", 2 => "çift", _ => "diğer" };. Burada n 1 ya da 2 değilse _ dalı çalışır ve "diğer" döner.

Uygulama switch expression ile gün türü

String türünde day değişkeni tanımla ve değeri "Fri" olsun. desc adında bir değişken tanımla ve switch (day) ifadesine ata: "Fri" => "Hafta sonu yakını" ve _ => "Orta hafta" dallarını kullan. Sonra print(desc); ile yazdır. Çıktı tek satırda Hafta sonu yakını olmalı.

Başlangıç kodu

main.dart
// day değişkenini tanımla, switch expression ile desc'i ata ve yazdır

Örnek çözüm

main.dart
String day = "Fri";
var desc = switch (day) {
  "Fri" => "Hafta sonu yakını",
  _ => "Orta hafta",
};
print(desc);

Beklenen çıktı

Hafta sonu yakını

Soru ve cevaplar

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

1 switch expression'da dallar hangi işaretle ayrılır?

main.dart
var x = switch (n) {
  1 => "bir",
  _ => "diğer",
};
  • case ... :
  • => Doğru cevap
  • :
  • ->

Açıklama: switch expression'da her dal => oku ile değer üretir.

2 Parçayı işlevine eşle

Kavram Anlamı
switch (x) { Denetlenecek değer
=> Sonuç oku
_ Wildcard (diğer)
var y = switch Sonucu değişkene ata

3 switch expression satırını yaz

Soru
String day = "Fri";
var desc = switch (day) {
  ____
  _ => "Orta hafta",
};
print(desc);
Cevap
String day = "Fri";
var desc = switch (day) {
  "Fri" => "Hafta sonu yakını",
  _ => "Orta hafta",
};
print(desc);

Açıklama: => oku ile değer üretilir; satır sonu virgülle kapanır.

Başlangıç bölümündeki tüm dersler