Özet - Metaprogramming
- Dart kursu
- İleri seviye
- Ders 24/83
- 5 dk
reflection, mirrors ve source_gen'i birleştirerek bir kod üreteci yazarsın.
Özet - Metaprogramming
Bu grupta Dart'ın metaprogramming araçlarını inceledik: dart:mirrors (çalışma zamanı reflection), runtimeType (basit tip bilgisi), Function.apply (dinamik çağrı), macro (Dart 3, derleme zamanı), source_gen (build adımı kod üretimi).
Pratik tercih: Flutter/AOT için source_gen (json_serializable, freezed); Dart VM için dart:mirrors; gelecek için macro.
Her aracın maliyeti farklıdır: mirrors runtime'da yavaştır, source_gen derleme öncesi maliyet getirir ama runtime'da ücretsizdir.
Uygulama Özet: Function.apply ile kare
Top-level int square(int x) => x * x; fonksiyonunu tanımla. main içinde var r = Function.apply(square, [5]); ve print(r); ekle.
Başlangıç kodu
void main() {
// square fonksiyonunu tanımla (main dışında)
// Function.apply ile square(5) çağrısı ekle; yazdır
}Örnek çözüm
int square(int x) => x * x;
void main() {
var r = Function.apply(square, [5]);
print(r);
}Beklenen çıktı
25
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Flutter için en iyi seçenek?
- manuel kod
- dart:mirrors
- sadece runtimeType
- source_gen Doğru cevap
Açıklama: source_gen Flutter/AOT'de çalışır ve runtime maliyeti yoktur.
2 Araçları eşleştir
| Kavram | Anlamı |
|---|---|
dart:mirrors |
Runtime reflection |
source_gen |
Build adımı |
Function.apply |
Dinamik çağrı |
runtimeType |
Tip bilgisi |
3 Dinamik fonksiyon çağrısı
var r = ____(add, [3, 4]);
var r = Function.apply(add, [3, 4]);
Açıklama: Function.apply add(3,4) ile eşittir.