塊
特殊的操作符塊允許對多個 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
形式的封閉形式仍被視為頂級形式。