【问题标题】:Is it possible in Common Lisp to disable return values for specified functions?在 Common Lisp 中是否可以禁用指定函数的返回值?
【发布时间】:2013-07-05 16:32:19
【问题描述】:

我想知道是否可以禁用指定函数的返回值。我正在使用编译器 SBCL。我问这个,因为打印返回值需要一段时间,我什至不需要它。有什么想法吗?

好的,它完成了工作:

(progn
  (...)
  t)

另外,感谢*print-length*

【问题讨论】:

标签: common-lisp return-value sbcl


【解决方案1】:

我发现通过在我的 lisp 启动文件中将 *print-length* 变量设置为相对较低的值来限制打印到我的回复的数据量很有用,如下所示:

(setf *print-length* 20)

这样,我就不用太担心返回大量元素的函数了。

【讨论】:

    【解决方案2】:

    使用函数values 可以从函数返回零个(或多个)值。 values 返回它的所有参数。因此,以(values) 作为最后一种形式的函数不会返回任何内容,而以(values val1 val2 val3) 结尾的函数将返回三个值。当调用返回多个值的函数时,只有第一个(主返回值)以正常方式可用,而其他的可以使用例如捕获。 multiple-value-bind 有关详细信息,请参阅 Hyperspec 中有关 Return Values 的部分

    如果你想限制一个你不能修改的函数的输出,你可以这样调用它:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多