尽管如此,我还是不明白为什么我必须在每个条件下使用两个括号。也许答案是“因为它是一个条件,而不是一个参数,条件必须在括号中,即使它是每种情况下唯一的东西”。但如果是这样,最后一个条件。。。默认条件。。。那么为什么它没有括号呢?
别担心;不需要道歉。
不一定,这取决于条件是原子还是表达式,因为测试参数可能是任何AutoLISP数据类型。
例如,考虑以下人为示例:
(defun c:test ( / a b c )
(cond
( (progn
(initget "Red Blue Green")
(setq a (getkword "\nWhat's your favourite colour? <more>: "))
)
)
( (progn
(initget "Yellow White Black")
(setq b (getkword "\nWhat's your favourite colour? <more>: "))
)
)
( (progn
(initget "Orange Purple Brown")
(setq c (getkword "\nWhat's your favourite colour? <I don't know!>: "))
)
)
)
(princ
(strcat "\nYour favourite colour is "
(cond
( a )
( b )
( c )
("unknown")
)
)
)
(princ)
)
测试或/和函数也是如此-使用用户输入的getpoint:LMB返回值或RMB返回nil。 返回您的代码
(defun C:test ( / a )
(cond
( (setq a (getpoint "\nFirst try <enter to skip>: ")) (alert "First point specified.") )
( (setq a (getpoint "\nSecond try<enter to skip>: ")) (alert "Second point specified.") )
( (setq a (getpoint "\nThird try<enter to skip>: ")) (alert "Third point specified.") )
( (alert "\nYou didn't tried enough - all I wanted was a point!") )
); cond
(princ)
); defun C:test back to your code
((= s "Y") 1) ;if s equals "Y", then it'll return 1((= s "y") 1) ;if s equals "y", then it'll return 11 line only needed((= (strcase s) "Y") 1) ;if s equals "Y", then it'll return 1
页:
1
[2]