回答
這是一個make-keyword
函數,它將關鍵字創建過程(intern
的名稱包裝到KEYWORD
包中)打包。 :-)
(defun make-keyword (name) (values (intern name "KEYWORD")))
(intern "foo" "KEYWORD") -> :foo
其他串/符號轉換和符號和包的詳細討論見Common Lisp Cookbook的Strings section。
的名稱需要在「關鍵字」包被扣留是一個關鍵字。例如(intern「FOO」「KEYWORD」) – 2008-10-17 11:24:28
啊是的。 (intern「foo」「KEYWORD」)工作得非常好。謝謝。 – nathan 2008-10-17 11:30:30
在我的回答中,我將它打包成一個整潔的小功能,您可以享受。 :-) – 2008-10-17 11:33:39
在大致正確的情況下給出的答案並不能爲問題的例子提供正確的解決方案。
考慮:
CL-USER(4): (intern "foo" :keyword)
:|foo|
NIL
CL-USER(5): (eq * :foo)
NIL
通常你想實習之前將字符串UPCASE適用於字符串,即:
(defun make-keyword (name) (values (intern (string-upcase name) "KEYWORD")))
有一個在Alexandria庫make-keyword
功能,雖然它保存大小寫以得到你想要的東西,然後你必須首先處理字符串。
在本例中它也與空格的字符串(由點代替)涉及:
(defun make-keyword (name) (values (intern (substitute #\. #\space (string-upcase name)) :keyword)))
- 1. 關於Common Lisp中
- 2. 關鍵字如何在Common Lisp中工作?
- 3. Common Lisp a Lisp-n?
- 4. Common Lisp SublimeREPL
- 5. Common Lisp Loop Trouble
- 6. Common Lisp中
- 7. Common Lisp流?
- 8. Step Eval Common Lisp
- 9. 「unfold」for common lisp?
- 10. Predicates Common Lisp
- 11. Common Lisp Binary Tree
- 12. Scheme或Common Lisp?
- 13. common lisp和emacs
- 14. 與Common Lisp中
- 15. Common Lisp Timer
- 16. Scheme vs Common Lisp
- 17. 替換Common Lisp中
- 18. asdf building和Common Lisp
- 19. Common Lisp弱引用?
- 20. 規則Common Lisp中
- 21. 如果Common Lisp中
- 22. 的#ifndef Common Lisp中
- 23. 使用的Common Lisp
- 24. 如何Common Lisp中
- 25. (撰寫)在Common Lisp
- 26. 通過位置或關鍵字接受參數的Common Lisp函數?
- 27. Common Lisp類層次結構
- 28. LISP:關鍵字參數,提供 - p
- 29. 在Common Lisp中使用字符串對象作爲散列鍵
- 30. Common Lisp類型說明符
差不多,但不完全。在創建關鍵字時,還必須確保將其值綁定到自身。 – Vatine 2014-06-06 06:14:13
@Vatine我只有SBCL才能測試,而在SBCL中,`(symbol-value(intern「FOO」「KEYWORD」))`已經具有正確的值。此外,亞歷山大也使用相同的方法實施它。 – 2014-06-09 14:37:49