2016-03-31 5 views
0

Sorry, wenn der Titel irgendwie komisch ist, aber ich war nicht wirklich sicher, wie man es formuliert. Wie auch immer, mein Projekt ist ein Objekt Maker und gerade formatiere ich gerade alles, so dass es mit eval funktioniert und ich habe Probleme bei der Übersetzung dieser Anweisung (cond ((equal? message 'getx) xval)...) in meinen Objekt Code Maker wo Nachricht ist ein Befehl übergeben und xval ist nur eine Instanzvariable. Offensichtlich gleich? und die Nachricht ist einfach genug, nur 'equal? und 'message zu verwenden, um nicht ausgewertet zu werden, aber wie bekomme ich das Apostroph zu zeigen?Wie bekomme ich ein 'in Schema zu bleiben

ich in Dr. Racket recht groß bin mit, ob das ein Unterschied Klärung

macht: Wenn ich (eval (list 'equal? 'message 'getx laufen) ...), es würde als (equal? message getx)... läuft und stattdessen will ich es (equal? message 'getx) sein Ich will es, um die Nachricht mit dem Symbol 'getx anstelle der Referenz getx zu vergleichen.

+0

Könnten Sie versuchen, Ihre Frage ein wenig zu klären? Ich könnte raten, was dein Problem ist, aber hoffentlich kannst du es weiter erklären. Versuchen Sie, einen minimalen Testfall (Code) zu erstellen, der das Verhalten zeigt, das Sie nicht erwartet haben. –

+0

Für jedes "" bewerten Sie seine Argumente nicht. 'x' ist nur Zucker für' (Zitat x) '. zB '(list 'quote' data)' wird als '' data' oder '(quote data)' angezeigt. Beide wahrscheinlichen Szenarien, da sie dasselbe bedeuten. – Sylwester

Antwort

3

Wenn ich das richtig verstanden, Sie nur den gesamten Ausdruck zitieren müssen:

'(cond ((equal? message 'getx) xval)...) 
+1

Ich habe es gerade getestet und das ist genau das, was ich brauchte, danke! – grizzle

Verwandte Themen