So implementieren Sie Call Caching (Memoization)
-
21-12-2019 - |
Frage
Ich möchte den Anrufcache (Memoisierung) in nicht aufdringlicher Weise mit den Metadaten-Anmerkungen implementieren.
Hoffentlich funktioniert es so:
generasacodicetagpre. kann es mit nur dart:mirrors
erreicht werden?
Lösung
Ich habe vor einiger Zeit einen ganzen Blogbeitrag auf diesem Thema geschrieben.Es ist zu lang, um hier zu kopieren, also hier ist der Link:
http://dartery.blogspot.com/2012/09 / Memoizing-Funktionen-in-dart.html
Das UpShot ist, dass Sie Memanisierungsfunktionen höherer Ordnung schreiben können, aber sie sind in der Allgemeinheit von Darts Mangel an flexiblen ARGS-Funktionen begrenzt.Wenn Sie auch dynamische Programmierung mit rekursiven Funktionen verwenden möchten, müssen Sie Ihre Funktion mit der Memoization im Sinne schreiben - es muss sich als Argument annehmen, sodass Sie die memanisierte Version weitergeben können.
Andere Tipps
Meine aktuelle Lösung ermöglicht:
generasacodicetagpre.Ausgang:
Erster Anruf mit: 21
42
42
Erster Anruf nach Baz
Erster Anruf mit: 22
44
Fehler:
- keine Methoden mit ihren tatsächlichen Namen verkünden.
- kann die Sammelansicht verlängern, kann jedoch nicht vorhandene Operatoren wie operator []
cache
- Kann keine Funktionen cache cache.
Vollquelle:
generasacodicetagpre.