我读到 Common Lisp 中的每个表单在计算时都会返回一些东西。然而,最近我一直在玩 ASDF API 并发现了一个不返回任何内容的函数:
CL-USER> (asdf:clear-output-translations)
; No value
这怎么可能,为什么它不返回像 NIL
这样的东西?
最佳答案
Common Lisp 允许函数从 0
返回到 MULTIPLE-VALUES-LIMIT值。常量 MULTIPLE-VALUES-LIMIT
为 20
或更大。
函数VALUES允许返回 multiple values ,包括零值。
因此,当一个函数没有有用的返回值并且只是为了副作用而调用时,一个常见的习惯用法是使用 (values)
的形式。此外,这通常会导致 Lisp 监听器(又名 REPL)不打印任何内容作为返回值,这对于审美原因很有用。
请注意,变量只有一个值,并且只能将一个值绑定(bind)到一个变量。
关于function - Common Lisp 函数没有返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25322367/