Clojure-Datensatz: Wie bekomme ich einen angegebenen Typ bei einem Attributnamen?

9

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:

%Vor%

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.

    
EnToutCas 21.02.2011, 20:02
quelle

2 Antworten

3

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%     
ordnungswidrig 01.03.2011, 10:04
quelle
1

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.

    
Jouni K. Seppänen 24.02.2011 17:48
quelle

Tags und Links