2013-07-05 50 views
0

我想知道是否可以禁用指定函數的返回值。我正在使用編譯器SBCL。我這樣問,因爲打印返回值需要一些時間,我甚至不需要它。有任何想法嗎?Common Lisp可以禁用指定函數的返回值嗎?

OK,它的工作:

(progn 
    (...) 
    t) 

此外,感謝*print-length*

+2

可能重複[如何避免打印到最後的nil?](http://stackoverflow.com/questions/17429729/how-can-i-avoid-the-nil-printed-in-the-結束) –

回答

1

使用函數values可以從函數中返回零(或多個)值。 values返回它的所有參數。因此,具有(values)作爲最後形式的函數不會返回任何內容,而以(values val1 val2 val3)結尾的函數將返回三個值。當調用返回多個值的函數時,只有第一個(主返回值)以正常方式可用,而其他值可以使用例如multiple-value-bind看到Hyperspec進一步的細節

如果要限制從一個函數的輸出,你不能修改,你可以這樣調用上Return Values部分:

(progn 
    (function-returning-much-data) 
    (values)) 
3

我覺得它有用在我的LISP啓動文件中*print-length*變量設置爲相對較低的值來限制打印到我的答覆的數據量,像這樣:

(setf *print-length* 20) 

這樣,我也不必過分擔心功能返回大量的元素。