本帖最后由 作者 于 2008-8-6 12:32:01 编辑
progn其实就是将多个表达式打包成一个表达式 通常用在 if, while 等语句中。如: (if a (progn (setq a 0) (princ "你好!") ) (princ "大家好!") ) 蓝色部分是 a 为非 nil 的情况下所执行的表达式 (if a (setq a 0) (princ "你好!") (princ "大家好!") ) 语法错误,因为 if 至多只能有2个参数 (if a (setq a 0) (princ "你好!") ) ---------------------------------------------------------- cond一般则不需要progn (cond ((= a 1) ...) ((= a 2) ...) ... ) 直到绿色部分返回 非nil 值则执行随后的红色部分 (setq a T) (cond ((progn a (setq a 0) nil)) ((memberP a) (setq a (1+ a))(setq b T) (princ "123"))) ... ) 因为蓝色部分返回 nil 值,所以下一行的代码也被执行 以上例子 在cond语句中使用progn可以执行一个以上的表达式 |