Initializer list
- Dart kursu
- Orta seviye
- Ders 3/116
- 5 dk
Initializer list ile alan başlatmayı öğrenirsin.
Initializer list
Initializer list (başlatma listesi), yapıcı gövdesinden önce alanlara değer atamanın yoludur. İki nokta üst üste ile başlar ve virgülle ayrılmış atamalar içerir: : width = size, height = size.
Örnek: Rectangle.square(double size) : width = size, height = size;. Burada width ve height alanları gövde çalışmadan önce ayarlanır. final alanlar gövde içinde değiştirilemediği için initializer list, onları atamanın temiz yoludur. List, gövdeden önce çalışır; bu nedenle hesaplamaları burada yapmak daha güvenlidir.
final alanlar ve initializer list
final ile işaretlenen alanlar yalnızca bir kez atanabilir; bu atama yapıcı tamamlanmadan önce yapılmak zorundadır. Initializer list, bu koşulu karşılayan en temiz yoludur.
Örnek: class Rectangle { final double width; final double height; Rectangle(this.width, this.height); Rectangle.square(double size) : width = size, height = size; }. square named constructor'ı her iki final alana da initializer list içinde değer verir. Gövde boş olsa bile noktalı virgülle biter. Bu yapı, alanların yapı taşı (immutable) nesneler üretmesini sağlar.
Uygulama Rectangle.square yapıcısını yaz
Rectangle adında bir sınıf tanımla. final double width ve final double height alanlarını ekle. Default constructor Rectangle(this.width, this.height) yaz. Rectangle.square(double size) : width = size, height = size; named constructor'ını ekle. main içinde var r = Rectangle.square(5); ile örnek oluştur ve print(r.width) çağrısı yap.
Başlangıç kodu
// Rectangle sınıfını tanımla
// final width ve height ekle
// Default constructor ve Rectangle.square ekle
void main() {
// Rectangle.square(5) örneğini oluştur ve r.width yazdır
}Örnek çözüm
// Rectangle sınıfını tanımla
class Rectangle {
final double width;
final double height;
Rectangle(this.width, this.height);
Rectangle.square(double size) : width = size, height = size;
}
void main() {
var r = Rectangle.square(5);
print(r.width);
}Beklenen çıktı
5.0
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Initializer list parçalarını eşle
| Kavram | Anlamı |
|---|---|
: |
Liste başlangıcı |
width = size |
Atama |
final |
Değişmez alan anahtarı |
2 İki noktayı ekle
class Rectangle {
final double width;
final double height;
Rectangle.square(double size)____ width = size, height = size;
}
class Rectangle {
final double width;
final double height;
Rectangle.square(double size): width = size, height = size;
}
Açıklama: İki nokta, initializer list'i yapıcı gövdesinden ayırır.
3 Hangisi geçerli bir initializer list söz dizimidir?
- Rectangle.square(double size) { width = size; height = size; }
- Rectangle.square(double size) => width = size, height = size;
- Rectangle.square(double size) : width = size, height = size; Doğru cevap
- Rectangle.square(double size) where width = size, height = size;
Açıklama: İkinokta, initializer list'i gövdeden ayırır; virgül atamaları bölümler.