Mirror
- Dart kursu
- İleri seviye
- Ders 20/83
- 5 dk
InstanceMirror ve ClassMirror öğrenirsin.
InstanceMirror ve ClassMirror
dart:mirrors'da reflect(obj) bir InstanceMirror döndürür. Bu mirror üzerinden nesnenin alanlarına ve metotlarına erişilir.
reflectClass(T) ise bir ClassMirror verir. ClassMirror ile sınıfın alanlarını, metotlarını ve üst türlerini listeleyebilirsin.
Örnek: var m = reflect(u); print(m.type.simpleName);. simpleName bir Symbol'dür; MirrorSystem.getName(sym) ile metne çevrilir.
Symbol ve getName
Mirror API'sinde isimler Symbol olarak temsil edilir. Symbol('name') ya da #name literal'i ile oluşturulur.
Bir Symbol'ü metne çevirmek için MirrorSystem.getName(symbol) çağrılır. Örnek: MirrorSystem.getName(#hello) → 'hello'.
Symbol'ler minification (kod küçültme) sırasında korunur; bu yüzden reflection ile erişilebilir alanlar Symbol olarak tutulur.
Uygulama Sınıf alanlarına runtimeType ile bak
class Point { double x; double y; Point(this.x, this.y); } tanımla. main içinde var p = Point(3.0, 4.0); oluştur; print(p.runtimeType); ve print(p.x); ekle.
Başlangıç kodu
void main() {
// Point sınıfını tanımla (main dışında)
// örnek oluştur; runtimeType ve x yazdır
}Örnek çözüm
class Point {
double x;
double y;
Point(this.x, this.y);
}
void main() {
var p = Point(3.0, 4.0);
print(p.runtimeType);
print(p.x);
}Beklenen çıktı
Point 3.0
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Nesne yansıması
var m = ____(u);
var m = reflect(u);
Açıklama: reflect(u) bir InstanceMirror döndürür.
2 reflectClass ne döndürür?
- Symbol
- InstanceMirror
- Type
- ClassMirror Doğru cevap
Açıklama: reflectClass bir ClassMirror döndürür.
3 Mirror kavramlarını eşleştir
| Kavram | Anlamı |
|---|---|
reflect(obj) |
InstanceMirror |
reflectClass(T) |
ClassMirror |
Symbol |
İsim soyutlaması |
getName |
Metne çevirme |