Conditionals 條件函數
(=)
不是指定的指令 , 只有 (setq) 才是 . (=) 指令只用來測試各項目是否相等 . 它不是用在指定某變數的值等於某變數或某數值的 .
if
(if) 是標準的 if-then-else statement. 在 AutoLISP 裡 , 只能寫一項 if statement 和一項 then statement. 例如 :
(if (= a b)
(setq b 5)
(setq b 6)
)
If 如果 a 等於 b , then 則 b 將被指定其變數值為 5 . If 如果 不相等 , then 則 b 將被指定其變數值為 6 .
Cond (Conditional) 多條件函數
此函數接受任意數量的 list 做為 argument. 它會依序評估每一 list 的第一個項目 , 直到找到一個條件式的值不是 nil 的為止 .
例如 : 假設 user 的回應文字為變數 variable s ,
(cond
((= s "Y") 1)
((= s "y") 1)
((= s "N") 0)
((= s "n") 0)
(t nil)
)
此函數測試回應文字的變數 , 如果其值為 "Y" 或 "y" , 則回傳 1 ; 如果是 "N" 或 "n" , 則回傳 0 ; 如果回應的文字為其它的文字 , 則回傳 nil .
Repeat
類似廻圈的指令 , 依所指定的次數來執行其內部工作 . 例 :
(setq a 10)
(setq b 100)
(repeat 4
(setq a (+ a 10))
(setq b (+ b 10))
)
Returns 140 .
While
另一個巢狀廻圈的常用控制指令 . 如果要重複執行指令,巢狀廻圈的功能是非常重要的 . 無論如何 , 除非你有方法控制它 , 否則此程式將會永遠的重複執行廻圈內的工作,而看起來像是當機一般---没有任何反應 . eg:
(setq a "w")
首先必須設定一個非 nil 的變數值 .
(while a
當 a 值存在 , 不為 nil 的時候 , 則重複執行以下的廻圈指令 .
(xxxx)
(xxxx) 在此指廻圈中所要執行的指令 , 可以是多個指令 .
(if (= c d) (setq a nil))
在廻圈內的指令中 , 必須有類似這樣的控制廻圈執行或結束的指令 . 此例是設定當變數 c 和變數 d 的值相同時 , 則設變數 a 的值為 nil. 如此 , 才能令廻圈結束 .
)
當廻圈結束後 , 將繼續執行其後的指令 .