在 Common Lisp 中,我们可以通过“return-from”提前退出具有指定返回值的函数。 PicoLisp中有类似的函数吗?
我尝试过谷歌搜索和 ChatGPT 但无济于事。有趣的是,ChatGPT 虚构了一个不存在的“退出”功能:
(de my-function (x)
(if (= x 0)
(exit "Early return value") ## Imagined by GPT
(+ x 10) ) )
像这样就好了。
这个问题的部分答案是 quit 函数,它可以让你提前退出函数。
来源:https://software-lab.de/doc/refQ.html#quit
(退出['任何['任何]]) 停止当前执行。如果未给出参数,则执行所有挂起的finally 表达式,并将控制权返回到顶层读取-求值-打印循环。否则,将输入错误处理程序。第一个参数可以是一些错误消息,第二个参数可能是错误的原因。
: (de foo (X) (quit "Sorry, my error" X))
-> foo
: (foo 123) # 'X' is bound to '123'
123 -- Sorry, my error # Error entered
? X # Inspect 'X'
-> 123
? # Empty line: Exit
:
但是,请注意 quit 函数似乎不会产生返回值。
? (de foo (X) (quit "Sorry, my error" X))
-> foo
? (setq ret-value (foo "DOG"))
"DOG" -- Sorry, my error
? ret-value
-> NIL