我想知道是否可以禁用指定函數的返回值。我正在使用編譯器SBCL。我這樣問,因爲打印返回值需要一些時間,我甚至不需要它。有任何想法嗎?Common Lisp可以禁用指定函數的返回值嗎?
OK,它的工作:
(progn
(...)
t)
此外,感謝*print-length*
。
我想知道是否可以禁用指定函數的返回值。我正在使用編譯器SBCL。我這樣問,因爲打印返回值需要一些時間,我甚至不需要它。有任何想法嗎?Common Lisp可以禁用指定函數的返回值嗎?
OK,它的工作:
(progn
(...)
t)
此外,感謝*print-length*
。
使用函數values
可以從函數中返回零(或多個)值。 values
返回它的所有參數。因此,具有(values)
作爲最後形式的函數不會返回任何內容,而以(values val1 val2 val3)
結尾的函數將返回三個值。當調用返回多個值的函數時,只有第一個(主返回值)以正常方式可用,而其他值可以使用例如multiple-value-bind
看到Hyperspec進一步的細節
如果要限制從一個函數的輸出,你不能修改,你可以這樣調用上Return Values部分:
(progn
(function-returning-much-data)
(values))
我覺得它有用在我的LISP啓動文件中*print-length*
變量設置爲相對較低的值來限制打印到我的答覆的數據量,像這樣:
(setf *print-length* 20)
這樣,我也不必過分擔心功能返回大量的元素。
可能重複[如何避免打印到最後的nil?](http://stackoverflow.com/questions/17429729/how-can-i-avoid-the-nil-printed-in-the-結束) –