Rückgabe mehrerer Werte aus einem Clojure-Makro

8

Ich muss mehrere Methoden zu einem Clojure defprotocol hinzufügen, das ich für mehrere identische Swing-Komponenten schreibe:

%Vor%

Gibt es eine Möglichkeit, dass ich ein Makro schreiben kann, das alle drei Methodensignaturen zurückgibt ( xxx-button-add-action-listener , xxx-button-set-enabled , xxx-button-set-selected )?

%Vor%

Dieses Makro muss dem wachsenden defprotocol bei jedem Aufruf drei Elemente hinzufügen.

Kann ein Makro '~@a-list zurückgeben und "an Ort und Stelle" expandieren?

    
Ralph 18.06.2011, 20:03
quelle

2 Antworten

10

Ja, Sie müssen nur Ihr Makro in einem (do ...) erweitern, und der Clojure-Compiler wird die do untergeordneten Elemente als eine Folge von Top-Level-Formularen fädeln.

    
Laurent Petit 19.06.2011, 09:09
quelle
1

Ich glaube, dass ein Makro zu einer einzigen Form erweitert werden muss - also können Sie das nicht genau so machen, wie Sie es beschreiben.

Jedoch ist nicht alles verloren, weil es sicherlich möglich wäre, dies mit einem Makro auf der obersten Ebene zu schreiben, das ungefähr so ​​aussieht:

%Vor%

Was können Sie wie folgt verwenden:

%Vor%     
mikera 18.06.2011 20:35
quelle

Tags und Links