Emi*_*ien 0 lisp loops common-lisp
我需要在循环条件下执行除"collect"之外的指令,我无法找出工作语法......
例如,我希望以下代码打印i并在2 <i时收集它.
(loop for i '(1 2 3 4) in when (< 2 i) (print i) collect i) ==> (3 4)
Run Code Online (Sandbox Code Playgroud)
希望你能帮忙!
多个条款在:if或:when需要加入:and.该关键字:end实际上被忽略,除了让您感觉更轻松阅读之外别无其他.
(loop :for i :in '(1 2 3 4)
:when (< 2 i)
:do (print i)
:and :collect i
:end) ; ==> (3 4) (and prints 3 and 4 as side effect)
Run Code Online (Sandbox Code Playgroud)
我建议你阅读Black Belts的LOOP.如果你看上面这部分,你会看到:and一个稍微复杂的例子.
NB:loop接受来自任何包的符号,所以我的风格是使用关键字包不要用loop关键字污染我自己的包,我的编辑器稍微强调它.你不需要按照我的方式去做:-)