如何在一个块内临时定义条件



在常见的LISP中(在我的情况下是SBCL(,使用定义条件宏来定义异常(称为"条件"(。这在当前软件包内定义了全球条件。

是否有一种方法可以在特定范围内定义条件?或者,或者,其他一些惯用的方法可以过早退出具有值的范围,而不污染全局名称空间?

(with-conditions
  (block
    (...)
    (prematurely-exit-block-with some-data)
    (...))
  (when-condition-happens (some data) ...))

是否可以在特定范围内定义本地条件?

no。

或者,或者是其他一些惯用方法,以过早退出具有值的范围,而不污染全局名称空间?

常见的LISP有几个用于此控制流的构造,其中返回一个或多个值: RETURNRETURN-FROMTHROW,...

  • RETURN block 返回名为 NIL
  • RETURN-FROM从命名 block
  • 返回
  • THROW跳到捕获标签,该标签通过CATCH
  • 建立

returnreturn-from使用词汇块。catch建立了其标签的动态范围。

相关内容

  • 没有找到相关文章

最新更新