CodeBlanks Logo Icon CodeBlanks

Enhanced enums

Dart 3 enhanced enum'ları öğrenirsin.

Enhanced enum

Dart 3 ile enhanced enum (gelişmiş enum) geldi. Sabitlere ek olarak alan (field), kurucu (constructor) ve yöntem (method) eklenebilir. Böylece her sabit kendi verisini taşır. Klasik enum yalnızca ad taşır; enhanced enum ad + değer taşır.

Örnek: enum Heat { low(10), medium(25), high(40); final int degrees; const Heat(this.degrees); }. Her sabitin bir degrees alanı olur; Heat.medium.degrees sonuçu 25. Kurucu const olmalıdır; aksi halde derleme hatası alınır. Bu, sabitleri gerçek türler gibi kullanmanı sağlar.

Alanlar ve yöntemler

Enhanced enum'a alan eklemek için sabit listesinden sonra noktalı virgül konur, ardından alan tanımları yazılır. enum Distance { near(5), far(50); final int km; const Distance(this.km); int get meters => km * 1000; }. Burada meters bir hesaplanan özellik (getter).

Her sabit bu alanlara ve yöntemlere erişebilir: Distance.far.meters sonuçu 50000'dir. Bu sayede enum sadece bir etiket değil, gerçek davranış taşıyan bir tür olur. Koşullar şunlardır: kurucu const olmalı, tüm alanlar final olmalı, sabit listesinden sonra noktalı virgül zorunludur.

Uygulama Sıra sende: derece alanlı enum

Heat adında, low(10), medium(25), high(40) sabitlerini içeren bir enhanced enum tanımla. final int degrees alanı ve const Heat(this.degrees) kurucusu olsun. main içinde Heat.medium.degrees'yi print ile yazdır.

Başlangıç kodu

main.dart
void main() {
  // Heat enhanced enum'ını tanımla
  // Bir sabitin degrees alanını yazdır
}

Örnek çözüm

main.dart
enum Heat { low(10), medium(25), high(40); final int degrees; const Heat(this.degrees); }

void main() {
  print(Heat.medium.degrees);
}

Beklenen çıktı

25

Soru ve cevaplar

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

1 Enhanced enum hangi ek özellikleri destekler?

  • Yalnızca yöntem Doğru cevap
  • Alan ve kurucu
  • Yalnızca ad
  • Yalnızca indeks

Açıklama: Enhanced enum alan, kurucu ve yöntem destekler.

2 const kurucu

Soru
enum Heat { low(10), medium(25), high(40); final int degrees; ____ Heat(this.degrees); }
Cevap
enum Heat { low(10), medium(25), high(40); final int degrees; const Heat(this.degrees); }

Açıklama: Enhanced enum kurucusu const olmalıdır.

3 Enhanced enum koşulları

Kavram Anlamı
const kurucu zorunludur
final alan değişmez veri
noktalı virgül sabit listesinden sonra
yöntem hesaplanmış davranış

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