Reflection
- Dart kursu
- Orta seviye
- Ders 80/116
- 5 dk
dart:mirrors ile reflection öğrenirsin.
dart:mirrors ile reflection
Reflection, bir programın kendi yapısını çalışma anında incelemesidir. Dart'ta dart:mirrors kütüphanesi bunu sağlar. Bir sınıfın alanlarını, metotlarını ve annotation'larını görebilirsin.
Örneğin reflect(obj) bir nesnenin aynasını verir; mirror.type ile türüne erişirsin. Bu, kod üretim araçlarında ve serileştirmede kullanışlıdır.
Not: dart:mirrors Flutter web'de çalışmaz. Sunucu ve CLI uygulamalarında kullanılır; performans maliyeti yüksektir.
Ayna almak
Bir nesneyi incelemek için önce import 'dart:mirrors'; yazarsın. Sonra var m = reflect(obj); ile bir ayna alırsın. m.type tür aynasını verir.
Tür aynasından m.type.declarations ile sınıfın bildirimlerini gezersin. Her bildirim bir alan, metod ya da constructor olabilir.
Reflection yavaştır ve boyut artırır; bu yüzden yalnızca gerçekten gerekli olduğunda kullan. Çoğu durumda derleme anı çözümler daha uygundur.
Uygulama Tür adını yazdır
import 'dart:mirrors'; ile reflection kütüphanesini içe aktar. Bir Item sınıfı tanımla. main içinde reflect(Item()) ile bir ayna al ve m.type.reflectedType değerini print ile yazdır.
Başlangıç kodu
// dart:mirrors kütüphanesini içe aktar
// Item sınıfını tanımla
void main() {
// bir Item örneğinin türünü yazdır
}Örnek çözüm
import 'dart:mirrors';
class Item {}
void main() {
var m = reflect(Item());
print(m.type.reflectedType);
}Beklenen çıktı
Item
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 dart:mirrors içe aktarımı
import '____';
void main() {}
import 'dart:mirrors';
void main() {}
Açıklama: reflection için dart:mirrors içe aktarılır.
2 dart:mirrors nerede çalışmaz?
- CLI uygulamalarında
- Flutter web'de Doğru cevap
- Sunucu uygulamalarında
- Konsol programlarında
Açıklama: dart:mirrors Flutter web'de çalışmaz.
3 Reflection parçaları
| Kavram | Anlamı |
|---|---|
reflect(obj) |
Nesne aynası |
dart:mirrors |
Reflection kütüphanesi |
m.type |
Tür aynası |
declarations |
Bildirimler |