以下代码段中:|temp files|
的含义是什么?
(defmethod acceptor-remove-session ((acceptor my-site-acceptor) (session t))
(declare (ignore acceptor))
(loop for path in (session-value :|temp files|)
do
(ignore-errors (delete-file path))))
答案 0 :(得分:9)
在Common Lisp中,|...|
可用于引用符号名称中的字符;它可能会逃避通常不允许的字符,例如空格,并且还会禁用大小写转换。
foo
或:foo
拥有symbol-name
"FOO"
|temp files|
或:|temp files|
拥有symbol-name
"temp files"
||
名为""
,空字符串,否则无法生成(这里的冒号具有关键字符号(KEYWORD
包中的符号)的通常含义,并且与条形无关。)
|...|
很有用。我想在这种情况下,文本“临时文件”出现在程序的输出某处,或者用于文件名,或者其他一些看起来TEMP-FILES
会令人讨厌的情况。
答案 1 :(得分:4)
|
是Common Lisp符号中的多重转义字符:
? 'aaBBcc|DDeeFFgg|hhII|jjKK|LL
-> |AABBCCDDeeFFggHHIIjjKKLL|
垂直条不需要包围整个符号名称。它也可以逃脱符号的一部分。
答案 2 :(得分:3)
Common Lisp允许符号名称包含大多数语言不允许使用的?
和%
字符。即使这样,有时程序员也希望符号名称包含超出通常允许的内容,例如OP示例中|temp files|
中的单个空格。需要两个管道(|
)字符来分隔此类符号的名称。此外,这些以管道分隔的符号名称区分大小写,与不受限制的符号名称不同。