在 common lisp 中,我有一个变量“名称”定义为:
(setq name ':length-1)
>> :length-1
现在我想使用这个变量创建一个 plist,我希望它看起来像:
(:length-1 10)
有没有办法使用另一个定义的变量来定义 plist 的键?
我尝试过“格式”,但这给了我一个字符串而不是符号:
(list (format nil ":~a" name) 10)
但这给了我:
(":lifting-surface" 10)
在 common lisp 中,我有一个变量“名称”定义为:
(setq name ':length-1)
>> :length-1
现在我想使用这个变量创建一个 plist,我希望它看起来像:
(:length-1 10)
有没有办法使用另一个定义的变量来定义 plist 的键?
我尝试过“格式”,但这给了我一个字符串而不是符号:
(list (format nil ":~a" name) 10)
但这给了我:
(":lifting-surface" 10)
这应该这样做:
(list name 10)
但是如果你得到":lifting-surface"而不是":length-1"当你使用时format,你一定改变了name.
看起来您正在尝试从字符串中创建关键字符号,我建议使用 alexandria 库中的 make-keyword 函数,如下所示:
(defun make-keyword (name)
"Interns the string designated by NAME in the KEYWORD package."
(intern (string name) :keyword))
编辑:哦,我看到你不是,但这可能还是有用的。