Sma*_*isp 3 lisp list common-lisp
我正在寻找创建一个以变量作为值的关联列表(common lisp)。
让我用(虚拟)代码更好地解释:
(defun mylist-create (val1 val2)
(setq alist '((key1 . val1)
(key2 . val2)))
;; do other things here
;; and return the list
alist)
(format t "~a~%" (mylist-create "toto" "tata"))
Run Code Online (Sandbox Code Playgroud)
这里的问题是“val1”和“val2”不被视为变量,因为列表不是用它们的值创建的,而是用它们的名称创建的。
如何在列表创建中提取它们的价值?“setf and assoc”是添加键/值对的唯一解决方案吗?
准引用是一种有选择地允许取消引用的值进入引用形式的方法。
(let ((x 10) (y 20))
`((x . ,x)
(y . ,y)))
=> ((X . 10) (Y . 20))
Run Code Online (Sandbox Code Playgroud)
因此,您使用反引号开始准引号,并在要评估的形式之前使用逗号,然后再进入引用形式。
归档时间: |
|
查看次数: |
735 次 |
最近记录: |