Lisp的暂停与while的特殊使用

   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)

           )

    )

*******************

作者:西部车床,如若转载,请注明出处:https://www.lathe.cc/2022/09/4194.html