明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 926|回复: 4

prognr 的用法,我这样的理解对吗?

[复制链接]
发表于 2008-8-6 11:21 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2008-8-6 12:29 | 显示全部楼层
本帖最后由 作者 于 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可以执行一个以上的表达式

 楼主| 发表于 2008-8-6 12:48 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2008-8-6 13:17 | 显示全部楼层
可以,不需progn
 楼主| 发表于 2008-8-6 17:02 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-12 14:28 , Processed in 0.196618 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表