请教循环退出的问题
请问,类似foreach、mapcar和repeat实现的循环语句,如何实现中间满足条件后结束循环,继续往下执行,而不需要继续剩余的无用循环了? 我的看法是,需要退出,那就用while循环,使用mapcar、foreach、repeat这类定量的循环语句是无法中途退出循环的,除非使用条件+exit,但这样就不仅仅退出循环了,而是退出程序了。mapcar等定量循环体一般有相对优化的算法,如果再生硬地加进一个退出相关的判断语句,即使能退出,从效率来说,也应该是得不偿失的。 受教了。谢谢! 这个我比较在行 while 可以退出的。当条件为nil就可以不循环了。 (setq loop T)
(mapcar '(lambda (x)
(if loop
(progn (if (equal x 20)
(setq loop nil)
)
)
)
)
'(10 20 30)
)
没办法只能在mapcar里加个判断。不过运行次数不会变化的。
页:
[1]