2016-03-31 26 views
0

對不起,如果標題有點奇怪,但我真的不知道如何說出它。無論如何,我的項目是一個對象製造商,現在我只是格式化一切,所以它與eval一起工作,我無法將此語句(cond ((equal? message 'getx) xval)...)轉換爲我的對象代碼生成器,其中消息是傳入的命令,而xval只是一個實例變量。顯然是平等的?和消息很容易,只是使用'equal?'message爲了不被評估,但我怎麼得到撇號顯示?如何獲得'留在計劃中

我在拍博士使用漂亮的大,如果有差別

澄清: 如果我運行(eval (list 'equal? 'message 'getx)...),將運行爲(equal? message getx)...,而是我希望它是(equal? message 'getx)我想它將消息與符號'getx而不是參考getx進行比較。

+0

你能嘗試澄清你的問題一點?我可以猜到你的問題,但希望你可以進一步解釋。嘗試產生一個最小的測試用例(代碼),顯示你沒有想到的行爲。 –

+0

對於每一個'''你都沒有評價它的論點。 ''x'只是''(quote x)'的糖。例如'(list'quote'data)'將顯示爲'data'或'(quote data)'。這兩種可能的情況都是相同的。 – Sylwester

回答

3

如果我理解正確的話,你只需要引用整個表達式:

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

剛剛測試過,這正是我需要的感謝! – grizzle