Sobes.tech
Junior

Dart dilinde switch operatörü kullanarak nasıl dallanma yapılır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Dart'ta switch operatörü ile dallanma şu şekilde yapılır:

void main() {
  var color = 'red';

  switch (color) {
    case 'red':
      print('Seçilen renk kırmızı.');
      break; // switch bloğundan çıkmayı sağlar
    case 'blue':
      print('Seçilen renk mavi.');
      break;
    case 'green':
      print('Seçilen renk yeşil.');
      break;
    default: // Hiçbir case eşleşmezse çalışır
      print('Bilinmeyen renk.');
  }
}

switch, değişkenin (bu durumda color) değerini case'den sonra belirtilen sabitlerle karşılaştırır. Eşleşme durumunda, bu case ile ilişkili kod çalıştırılır. break anahtar kelimesi, uygun case çalıştıktan sonra switch bloğundan çıkmak için gereklidir. Bunu atlamışsanız, yürütme bir sonraki case'e geçer (buna "fallthrough" denir), bu genellikle istenmez. default, hiçbir case eşleşmediğinde kullanılır.

Dart'ta, switch içinde sadece aşağıdaki ifade türleri kullanılabilir:

  • int
  • String (String)
  • Derleme zamanında sabitler (const) veya final (final) değişkenler
  • Enum (enum)

Ayrıca, case (Type value) kullanılarak tür eşleştirmesi yapılabilir:

void process(dynamic value) {
  switch (value) {
    case String s:
      print('Değer bir string: $s');
      break;
    case int i when i > 0: // `when` ile guard kullanımı
      print('Pozitif bir tamsayı: $i');
      break;
    case List _: // List türü ile eşleştirme, değişkene bağlamadan
      print('Değer bir liste');
      break;
    default:
      print('Başka bir türde değer');
  }
}

void main() {
  process('merhaba');
  process(10);
  process([1, 2, 3]);
  process(3.14);
}

Dart 3.0 ile, pattern matching yeni özellikler kazandı ve switch ifadeleri genişletildi:

var number = 1;
var text = switch (number) {
  1 => 'bir',
  2 => 'iki',
  _ => 'diğer' // default ile eşdeğer
};
print(text); // Çıktı: bir

Burada, switch bir değer döndüren ifade olarak kullanılır. _ operatörü, herhangi bir değere karşılık gelen joker karakterdir.