块
特殊的操作符块允许对多个 Lisp 表单进行分组(如隐式 progn
),并且它还使用名称来命名块。当评估块中的表单时, 可以使用特殊运算符 return-from 离开块。例如:
(block foo
(print 'hello) ; evaluated
(return-from foo)
(print 'goodbye)) ; not evaluated
;;=> NIL
return-from 也可以提供返回值:
(block foo
(print 'hello) ; evaluated
(return-from foo 42)
(print 'goodbye)) ; not evaluated
;;=> 42
当一大块代码具有有意义的名称或嵌套块时,命名块很有用。在某些情况下,只有早期从区块返回的能力才是重要的。在这种情况下,你可以使用 nil 作为块名称,然后返回 。返回就像返回一样,除了块名称总是为零。
注意:随附的表单不是顶级表单。这与 progn
不同,其中顶级 progn
形式的封闭形式仍被视为顶级形式。