Dart
Initializer list
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.
Örnek çözümü göster
// 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);
}
Kendini test et
-
Initializer list parçalarını eşle
- :
- Liste başlangıcı
- width = size
- Atama
- final
- Değişmez alan anahtarı
-
İki noktayı ekle
class Rectangle {
final double width;
final double height;
Rectangle.square(double size)____ width = size, height = size;
}
Cevabı göster
class Rectangle {
final double width;
final double height;
Rectangle.square(double size): width = size, height = size;
}
-
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;
- Rectangle.square(double size) where width = size, height = size;
Cevabı göster
Rectangle.square(double size) : width = size, height = size; — İkinokta, initializer list'i gövdeden ayırır; virgül atamaları bölümler.
Sıradaki ders: const constructor