小编Dan*_*ira的帖子

Common Lisp中的可参数化返回

我正在Common Lisp中学习块,并通过以下示例来了解块和return-from命令如何工作:

 (block b1 
            (print 1)
            (print 2)
            (print 3)
            (block b2 
                   (print 4)
                   (print 5)
                   (return-from b1)
                   (print 6)

               )
            (print 7))
Run Code Online (Sandbox Code Playgroud)

它将按预期打印1、2、3、4和5。将return-from更改为(return-from b2),将打印出1、2、3、4、5和7。

然后,我尝试将其转换为函数,并解析返回位置上的标签:

 (defun test-block (arg)  (block b1 
            (print 1)
            (print 2)
            (print 3)
            (block b2 
                   (print 4)
                   (print 5)
                   (return-from (eval arg))
                   (print 6)

               )
            (print 7)))
Run Code Online (Sandbox Code Playgroud)

并使用(test-block'b1)来查看其是否有效,但无效。有没有条件可以做到这一点的方法吗?

lisp eval block common-lisp

3
推荐指数
2
解决办法
195
查看次数

标签 统计

block ×1

common-lisp ×1

eval ×1

lisp ×1