CodeBlanks Logo Icon CodeBlanks

const constructor

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

main.dart
// 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

main.dart
// 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

Soru
class Point {
  final double x;
  final double y;
  ____ Point(this.x, this.y);
}
Cevap
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.

Orta seviye bölümündeki tüm dersler