const constructor
- Dart kursu
- Orta seviye
- Ders 4/116
- 5 dk
const constructor ile derleme zamanı nesne öğrenirsin.
const constructor
Bir const constructor, derleme zamanında sabit örnek üretir. Yapıcının önüne const eklenir ve tüm alanlar final olmak zorundadır.
Örnek: class Point { final double x; final double y; const Point(this.x, this.y); }. Burada const Point(0, 0) her çağrıda aynı kanonik örneği döndürür; bu, bellek tasarrufu sağlar ve eşitlik kontrollerini hızlandırır. Const constructor'a const anahtar kelimesi olmadan da çağrılabilir; o zaman derleme zamanı sabiti üretilmez. Bu yapı, Flutter'ın widget ağacında yoğun olarak kullanılır.
Kanonik örnekler
İki const Point(0, 0) çağrısı aynı örneğe işaret eder; Dart bunları kanonik hale getirir. identical(a, b) fonksiyonu true döner; == operatörü de true döner.
Örnek: const a = Point(0, 0); const b = Point(0, 0); print(identical(a, b)); çıktısı true olur. Bu, aynı sabit değer için yeni nesne üretilmemesi demektir; büyük nesne grafiklerinde bellek ve hız kazancı sağlar. const anahtar kelimesini çağrıda kullanmazsanız, her seferinde yeni bir örnek üretilir ve kanoniklik bozulur.
Uygulama Point sınıfına const constructor ekle
Point sınıfını tanımla; final double x ve final double y alanlarını ekle. const Point(this.x, this.y) yapıcısını yaz. main içinde const p = Point(0, 0); ile örnek oluştur ve print(p.x) çağrısı yap.
Başlangıç kodu
// Point sınıfını tanımla
// final x ve y alanları ekle
// Yapıcıyı const ön ekiyle yaz
void main() {
// const p = Point(0, 0) örneğini oluştur ve p.x yazdır
}Örnek çözüm
// Point sınıfını tanımla
class Point {
final double x;
final double y;
const Point(this.x, this.y);
}
void main() {
const p = Point(0, 0);
print(p.x);
}Beklenen çıktı
0.0
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 const constructor hangi alanları gerektirir?
- Yalnızca static alanlar
- Yalnızca late alanlar
- Herhangi bir alan türü
- Yalnızca final alanlar Doğru cevap
Açıklama: Const constructor, tüm alanların final olmasını zorunlu kılar.
2 const constructor parçalarını eşle
| Kavram | Anlamı |
|---|---|
const Point |
Yapıcı ön eki |
final |
Alan anahtarı |
identical(a, b) |
Aynı örnek sorgusu |
3 const anahtarını ekle
class Point {
final double x;
final double y;
____ Point(this.x, this.y);
}
class Point {
final double x;
final double y;
const Point(this.x, this.y);
}
Açıklama: const anahtar kelimesi yapıcıyı derleme zamanı sabit yapar.