Enhanced enums
- Dart kursu
- Başlangıç
- Ders 96/116
- 5 dk
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
void main() {
// Heat enhanced enum'ını tanımla
// Bir sabitin degrees alanını yazdır
}Örnek çözüm
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
enum Heat { low(10), medium(25), high(40); final int degrees; ____ Heat(this.degrees); }
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ış |