Lisp一般在交互输入时才会暂停,如果只需要实现屏幕显示暂停,可使用grread函数,grread函数对所有合法的输入设备均会作出反应,有时我们只希望对键盘有反应,可使用while函数进行循环。
*******************
(princ "nPress ENTER to continue:")
(while (/= (car (grread)) 2))
*******************
while用于满足一定条件的循环,其标准语法为:
(while testexpr [expr...])
其中expr解释为“在 testexpr 为 nil 之前要求值的一个或多个表达式”,为可选项(在R14之前没有方括号,但仍为可选项)。
正常我们使用while时,总会有expr项,更多的时候,我们是为了expr项才会使用这种循环语句,所有我们往往有expr项是不可缺少的感觉。这里我们使用while函数的语法是while函数的特例,即没有expr项的情况。
如果希望对鼠标右键同时反应,可以使用:
*******************
(princ "nPress ENTER to continue:")
(while (and (/= (setq a(car (grread))) 2) ;键盘
(/= a 11) ;鼠标右键(SHORTCUTMENU=0)
(/= a 25) ;鼠标右键(SHORTCUTMENU≠0)
)
)
*******************