Erstellen Sie einen Variablennamen aus einer Zeichenfolge in Lisp

8

Ich versuche, eine Zeichenfolge zu nehmen und sie in einen Variablennamen umzuwandeln. Ich würde zwar (make-symbol) oder (intern) das machen, aber anscheinend ist es nicht ganz das, was ich will, oder ich benutze es falsch.

Zum Beispiel:

%Vor%

Hier würde ich versuchen, eine Variable mit dem Namen 'foo' mit einem Wert von 5 zu erstellen. Außer dem obigen Code gibt mir einen Fehler. Nach welchem ​​Befehl suche ich?

    
Jeff 15.03.2011, 02:21
quelle

2 Antworten

10

Hier sind einige Dinge zu beachten:

  1. SETF wertet das erste Argument nicht aus. Es erwartet ein Symbol oder ein Formular, das einen zu aktualisierenden Speicherort angibt. Verwenden Sie stattdessen SET .

  2. Je nach Jahrgang und Einstellungen Ihrer Common Lisp-Implementierung können Symbolnamen standardmäßig in Großbuchstaben angezeigt werden. Daher kann der zweite Verweis auf foo sich tatsächlich auf ein Symbol beziehen, dessen Name "FOO" ist. In diesem Fall müssten Sie (intern "FOO") verwenden.

  3. Der Aufruf von STRING ist harmlos, aber unnötig, wenn der Wert bereits eine Zeichenfolge ist.

Versuchen Sie Folgendes:

%Vor%     
WReach 15.03.2011, 02:36
quelle
5

Verwenden:

%Vor%

Dies funktioniert auch mit einer Variablen:

%Vor%

Beachten Sie auch, dass Symbole standardmäßig intern als Großbuchstaben erstellt werden. Wenn Sie über einen String auf ein Symbol zugreifen wollen, müssen Sie einen String in Großbuchstaben verwenden.

    
Rainer Joswig 15.03.2011 21:17
quelle

Tags und Links