CAD画图狗的救赎——Lisp语言学习之路(五):条件运算if和progn函数

上一期讲了关于逻辑运算和比较运算,这次讲一下条件运算,也就是If语句。

本期你将学会以下内容:

  1. if函数的使用
  2. progn函数的使用

1.if函数

所谓条件语句,在中文里其实就是”如果…就…不然…“的语句。举个例子:(if (< 3 5) “对” “错”),它的意思是:如果3<5,那为对,不然为错,很显示3<5是对的,所以这条语句的值就是真。光这种语句其实是没有意义的,所以要搭配其它使用,下面再举个例子:

(setq a (if (< 3 5) 3 5)):判断3<5,如果是对的则令a=3,不然a=5,所以本条语句其实相当于令a=3。

(setq a (if (< 5 3) 3 5)):判断5<3,如果是对的则令a=3,不然a=5,所以本条语句其实相当于令a=5。

2.progn函数

上述的If函数只能处理一些简单的条件判断,复杂的就不能了。这个时候就要使用progn。比如说现在要处理这样一个情况,判断是否3<5,如果是对的,那么令a=3,并且计算a*2,然后将这个值在输出在CAD的命令行,不然令a=5,并且计算a*3,然后将这个值输出在CAD的命令行。Lisp的语句如下:

(
  if(< 3 5)
   (progn
     (setq a 3)
     (print (* a 2))   
   )
   (progn
     (setq a 5)
     (print (* a 3))
   )
)

从上面的可以看出来,If后面加了progn,它其实就是加大了if后面的处理量,上述的结果就是在命令行输出一个6。

下面再举个例子:

(
  if(> 3 5)
   (progn
     (if (> 3 4)
       (progn
	 (setq a 3)
	 (print (* a 3))
       )
     )
   )
   (progn
     (if (> 3 4)
       (progn
         (setq a 3)
         (print (* a 2))
       )
       (progn
         (setq a 4)
         (print (* a 4))
       )
     )
   )
)

上述Lisp语句的意思是:判断3>5,如果是对的,那进入第一个progn中进而判断3>4,如果3>4也是对的,那么令a=3,并在命令行输出3*3;如果3<5是错的,那进入第二个progn中进而判断3>4,如果3>4也是对的,那令a=3,在命令行输出3*2,如果3>4是错的,那令a=4,进而计算4*4。所以上述代码最终的结果是在命令行输出16。

if和progn语句在实际写插件中是非常常用的,一定要学会。

复制上述代码到CAD的Lisp编辑器中,然后执行,可以验证上述结果。也可以下载代码文件

发表评论