Ich bin ein absoluter Neuling, der im Grunde genommen einige Tutorials abhandeln und versuchen möchte. Ich habe eine Frage zu defrecord
s.
Hier ist die Sache, die ich versuche zu tun:
%Vor% Im obigen Code würde ich gerne key3
und key4
als optional haben, so dass ich ihnen nicht jedesmal Werte geben muss, wenn ich ein somemap
Objekt erstelle.
Es gibt eine ähnliche Frage hier , aber es verhält sich genau umgekehrt was ich hier versuche zu tun.
Also ist es möglich, defrecord
mit optionalen Feldern zu definieren?
Wenn Sie (defrecord T [...])
verwenden, werden zwei Factory-Funktionen erstellt: ->T
und map->T
.
Der erste verwendet die Positionsparameter als Schlüssel. Der zweite wendet eine willkürliche Karte auf den Datensatz an.
Sie können key3
und key4
im Konstruktor behalten und map->somemap
verwenden.
Da Datensätze in Clojure die Map-Schnittstelle implementieren, sind alle Felder außer den im Konstruktor angegebenen optional.
Wenn Sie also Ihren Datensatz nur mit key1
und key2
deklarieren, werden nur key1
und key2
im Konstruktor benötigt, aber Sie können einfach key3
oder key4
(oder beliebig anderen Schlüssel, indem Sie ihnen wie jeder anderen Karte einen Wert zuweisen.
Tags und Links clojure