final ve const alan
- Dart kursu
- Orta seviye
- Ders 20/116
- 5 dk
final ve const alanlarla değişmezliği öğrenirsin.
final alan
Bir final alan yalnızca bir kez atanabilir; atama yapıldıktan sonra değiştirilemez. Bu, değişmez (immutable) nesneler kurmanın temel yoludur.
Örnek: class Circle { final double radius; Circle(this.radius); }. Burada radius final'dir; yapıcı çağrıldığında değeri belirlenir ve sonradan değiştirilemez. final alanlar yapıcı tamamlanmadan önce atanmak zorundadır; bu nedenle initializer list veya this.alan kısayoluyla başlatılırlar. final, çalışma zamanında belirlenen değerler için uygundur.
const alan
Bir const alan derleme zamanında bilinen bir sabittir. const anahtar kelimesiyle yazılır ve değeri derleme sırasında hesaplanabilir olmalıdır.
Örnek: class Circle { final double radius; const Circle(this.radius); static const pi = 3.14; }. Burada pi const'tur; değeri derleme zamanında bellidir. radius ise final'dir; her örnek farklı bir değer alabilir. const alanlar otomatik olarak final'dir; ek olarak derleme zamanında hesaplanabilir olma koşulu taşır. Sabit değerler için const, örneğe özgü değerler için final kullanılır.
Uygulama Circle sınıfını final ve const ile yaz
Circle sınıfını tanımla; final double radius alanını ekle. const Circle(this.radius) yapıcısını yaz. static const pi = 3.14; sabitini ekle. double get area => pi * radius * radius; getter'ını yaz. main içinde const c = Circle(2); ile örnek oluştur ve print(c.area) çağrısı yap.
Başlangıç kodu
// Circle sınıfını tanımla
// final radius, const yapıcı, static const pi ve area getter'ı ekle
void main() {
// const Circle(2) örneğini oluştur ve c.area yazdır
}Örnek çözüm
// Circle sınıfını tanımla
class Circle {
final double radius;
const Circle(this.radius);
static const pi = 3.14;
double get area => pi * radius * radius;
}
void main() {
const c = Circle(2);
print(c.area);
}Beklenen çıktı
12.56
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 final ve const farkını eşle
| Kavram | Anlamı |
|---|---|
final |
Çalışma zamanında belirlenir |
const |
Derleme zamanında belirlenir |
immutable |
Değişmez nesne |
2 const alan ekle
class Circle {
final double radius;
const Circle(this.radius);
static ____ pi = 3.14;
}
class Circle {
final double radius;
const Circle(this.radius);
static const pi = 3.14;
}
Açıklama: const, derleme zamanı sabitlerini işaretler.
3 Hangisi doğrudur?
- final alan yapıcıda atanır, const alan derleme zamanında bellidir Doğru cevap
- const alan yapıcıda atanır, final alan derleme zamanında bellidir
- final yalnızca static alanlarla kullanılır
- İkisi de aynıdır
Açıklama: İkisi de değişmez ama atama zamanı farklıdır: final çalışma zamanında, const derleme zamanında.