与多个非嵌套IF语句相比,COND的另一个优点是,在测试条件返回非nil值时,不会不必要地评估其他测试条件。
例如:
- (defun c:test ( / num )
- (if (setq num (getint "\nEnter a Number: "))
- (cond
- ( (minusp num)
- (princ "\nYou Entered a Negative Number.")
- )
- ( (zerop num)
- (princ "\nYou Entered Zero.")
- )
- ( (= 3 num)
- (princ "\nYou Entered the Number 3.")
- )
- ( t
- (princ "\nYou Enter a Positive Non-zero Number not equal to 3.")
- )
- )
- )
- (princ)
- )
而不是:
由于只有一个条件可以返回T,因此在测试条件返回T后评估任何其他条件都没有意义。
COND的求值顺序与一组嵌套的IF语句相同,即您在其他语言中可能看到的“IF/Else-IF”结构(在其他语言中找到的“switch”语句也类似):
但是我认为你会同意COND语句更具可读性。
李 |