Records ve patterns
- Dart kursu
- Uzman
- Ders 5/47
- 5 dk
Records ve patterns tasarımını öğrenirsin.
Records
Records, Dart 3 ile gelen lightweight veri gruplama özelliğidir. (int, String) bir tamsayı ve bir metni birlikte tutar. final pair = (42, 'Merhaba'); tanımı ile iki değeri tek bir değişkende saklayabilirsin.
Alanlara .$1 ve .$2 ile erişilir: pair.$1 42 verir. Named field da mümkündür: ({int x, int y}). Records struct benzeri ama kalıtımsızdır ve değer tabanlıdır.
Patterns
Patterns, Dart 3 ile gelen ve record, liste, harita gibi yapıları çözümleyen (deconstruct) sözdizimidir. switch ifadesinde pattern eşleştirme yapılır: switch (pair) { case (int x, String y): print('$x $y'); }.
Patternler değerleri ayıklar ve eşleşme sağlar. Destructuring, variable binding ve guards (when) ile güçlü akış denetimi mümkün olur. Patterns, kodu daha bildirimsel (declarative) hale getirir.
Uygulama Record ile switch pattern
Bir String describePoint(int x, int y) fonksiyonu tanımla: gövdesinde return switch ((x, y)) { (0, 0) => 'Başlangıç', (int a, int b) => '$a,$b' }; switch ifadesi kullansın. main içinde print(describePoint(0, 0)); ve print(describePoint(3, 4)); çağrılarını ekle.
Başlangıç kodu
void main() {
// describePoint fonksiyonunu tanımla (switch + record pattern)
// iki nokta için çağrıları yazdır
}Örnek çözüm
String describePoint(int x, int y) {
return switch ((x, y)) {
(0, 0) => 'Başlangıç',
(int a, int b) => '$a,$b',
};
}
void main() {
print(describePoint(0, 0));
print(describePoint(3, 4));
}Beklenen çıktı
Başlangıç 3,4
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Record erişimi
final pair = (42, 'Merhaba');
print(pair.____);
final pair = (42, 'Merhaba');
print(pair.$1);
Açıklama: pair.$1 ilk alanı (42) verir.
2 Patterns parçalarını eşleştir
| Kavram | Anlamı |
|---|---|
(int, String) |
Record türü |
case (int x, String y) |
Pattern eşleşme |
$1 |
İlk alan erişimi |
switch |
Akış ifadesi |
3 Records hangi durumda kullanışlıdır?
- Tek bir değeri saklamak için
- Birden çok değeri lightweight olarak gruplamak için Doğru cevap
- Sınıf yerine kalıtım için
- Asenkron işlem sonuçlarını saklamak için
Açıklama: records birden çok değeri lightweight ve kalıtımsız gruplar.