Ich frage mich, ob es eine Möglichkeit gibt, den Typhinweis zu erhalten, der mit Attributen assoziiert ist, die mit defrecord deklariert sind. z. B. wenn ich die folgende Datensatzdefinition habe:
%Vor% Ich möchte eine Karte auf Foo
type abrufen, die mir die Attribute und ihre angedeuteten Typen gibt. Ich weiß, dass ich eine Liste der erklärten Attribute durch Reflexion bekommen kann:
Dies gibt mir eine Liste der deklarierten Felder, aber ihre Typen sind Object
. Ich weiß, dass Clojure eine dynamische Sprache ist, aber es wäre nett, wenn die Typen mir zurückgegeben werden, wenn ich sie brauche.
Die Typhinweise werden nirgendwo gespeichert. Sie können diese Informationen selbst verwalten, indem Sie ein Wrapper-Makro für den Defrecord schreiben, das die Typinformationen enthält. Sie könnten z.B. generieren Sie eine Build-Funktion für den Datensatztyp, der die Instanz mit Metadaten für die Felder anreichert:
%Vor%Siehe die Antworten zu diese Frage . Es scheint, dass Typhinweise für Felder derzeit nicht für viel verwendet werden, im Gegensatz zu Hinweisen auf Funktionsargumente und Rückgabewerte.