mise à jour 2012-07-04:
Daniel SOBRAL (également sur DONC) détails dans son blog "la sérialisation JSON avec la réflexion dans l'Scala! Partie 1 - Si vous voulez faire la réflexion?" certaines des fonctionnalités à venir avec la réflexion:
Pour récapituler, Scala 2.10 viendra avec un Scala de réflexion de la bibliothèque.
Cette bibliothèque est utilisée par le compilateur lui-même, mais divisé en couches à travers le modèle de gâteau, de sorte que les différents utilisateurs de voir différents niveaux de détail, en gardant pot de tailles adéquates à chaque utilisation, et j'espère que le masquage des détails indésirables.
La réflexion de la bibliothèque également s'intègre à la prochaine macro, ce qui permet en entreprenant des codeurs de manipuler le code au moment de la compilation.
mise à jour 2012-06-14. (à partir de Eugene Burmako):
En Scala 2.10.0-M4, nous avons publié la nouvelle API reflection qui seront les plus susceptibles d'en faire 2.10.0-finale, sans changements notables.
Plus de détails sur l'API peut être trouvé:
Extraits:
Les univers et les miroirs sont maintenant entités distinctes:
- les univers de l'hôte de la réflexion des artefacts (des arbres, des symboles, types, etc),
- miroirs résumé de chargement de ces artefacts (par exemple,
JavaMirror
charges de trucs
à l'aide d'un chargeur de classe et d'annotation unpickler, tandis que GlobalMirror utilise en interne le compilateur classreader
pour atteindre le même but).
Public API reflection est divisé en scala.reflect.base
et scala.reflect.api
.
- Le premier représente un minimaliste instantané qui est suffisante pour
construire réifiée des arbres et des types.
- De construire, mais de ne pas analyser - tout à puce (par exemple, l'obtention d'un type de signature) est mis en œuvre en
scala.reflect.api
.
À la fois réflexion domaines ont leur propre univers: scala.reflect.basis
et
scala.reflect.runtime.universe
.
- Le premier est super léger et n'implique pas de tout les chargeurs de classe,
- tandis que le second représente une dépouillé compilateur.
Première réponse, Sept. 2011:
Vous pouvez voir les évolutions de la refléter dans le package du Scala dépôt GitHub, avec ces deux très récentes s'engage à:
(Liftcode être, d'après ce fil, vise à simplifier "l'écriture de code qui écrit le code")
La classe scala/reflect/internal/Importers.scala
(créé hier!) est un bon exemple de l'utilisation de ces dernières réflexion fonctionnalité.