Mar*_*ark 5 lisp function common-lisp return-value
我已经读过,Common Lisp中的每个表单在评估时都会返回一些内容.但是,最近我一直在玩ASDF API并找到一个什么都不返回的函数:
CL-USER> (asdf:clear-output-translations)
; No value
Run Code Online (Sandbox Code Playgroud)
这怎么可能,为什么不回归NIL
呢?
Common Lisp允许函数从0
最高MULTIPLE-VALUES-LIMIT值返回.常数MULTIPLE-VALUES-LIMIT
是20
或更大.
因此,一个常见的习惯用法是(values)
在函数没有有用的返回值时使用该形式,并且只是调用副作用.此外,这通常会导致Lisp侦听器(也称为REPL)不打印任何内容作为返回值,这可能是出于审美原因.
请注意,变量只有一个值,并且只能将一个值绑定到变量.
函数可以使用(values)
表单不返回任何值.
例如:
(defun foo ()) ;; returns nil
(defun bar () (values)) ;; returns nothing
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
797 次 |
最近记录: |