Wie kann ich die Argumente eines Makros in einem anderen Makro auswerten?

8

Ich habe zwei Makros. Der erste nimmt ein Symbol als einzigen Parameter (weil es an def übergeben wurde, das ein Symbol benötigt). Die zweite Funktion nimmt eine Liste von Symbolen und sollte die erste mit jedem Symbol einzeln aufrufen.

%Vor%

Das zweite Makro sollte eine Liste von Symbolen nehmen und sie an die erste weitergeben, aber ich kann es nicht zum Laufen bringen. Das Beste, was ich mir vorstellen konnte, war folgendes:

%Vor%

erzwingt, dass die s# ausgewertet wird, bevor sie an das erste Makro übergeben wird. Es wird auch mit einer Liste von Zeichenfolgen anstelle einer Liste von Symbolen aufgerufen.

Dies ist nützlich für eine Bibliothek, die ich verwende, für die alle Funktionen in der Bibliothek dieselben zwei ersten Parameter haben. Ich versuche, Wrapper-Funktionen in meinem Namespace für einige der Funktionen zu erstellen, die automatisch die ersten beiden Parameterwerte bereitstellt, die allen gemeinsam sind.

Irgendwelche Ideen, um das zu verbessern?

    
Pieter Breed 10.03.2011, 12:19
quelle

1 Antwort

8

Wenn Sie normalerweise fragen, wie Sie zwei Makros zur Zusammenarbeit bringen, lautet die Antwort, sie nicht zu Makros zu machen. Ich denke, dass mein Blogbeitrag auf Macro-Writing-Makros zur Klärung beitragen wird. Für diese spezielle Situation würde ich wahrscheinlich zwei Vorschläge aus den Kommentaren kombinieren:

%Vor%

Dies wird auf

erweitert %Vor%

was im Prinzip so aussieht, wie Sie es wollen.

Edit: Wenn die Argumente, die Sie "immer" übergeben, für jede Funktion unterschiedlich sind, können Sie dies tun:

%Vor%     
amalloy 10.03.2011, 15:20
quelle

Tags und Links