张大锤 发表于 2018-6-13 10:48:27

请教 if 简约写法

(if (= ctrA "1")(if (= ctrB "2")(if (= ctrC "2")
(progn
(command "-insert" "s90" sxx_10 "" "" "")
(command "-insert" "kt7" ktx_10 "" "" "")
)
)))
(if (= ctrA "2")(if (= ctrB "1")(if (= ctrC "2")
(progn
(command "-insert" "s90" sxx_10 "" "" "")
(command "-insert" "kt7" ktx_10 "" "" "")
)
)))
(if (= ctrA "2")(if (= ctrB "2")(if (= ctrC "1")
(progn
(command "-insert" "s90" sxx_10 "" "" "")
(command "-insert" "kt7" ktx_10 "" "" "")
)
)))





请问红色字 因为ABC的循序原因 我要这么写3遍
虽然可以达到我要的效果 但我想请问一下 有比较简约的写法吗?

lijiao 发表于 2018-6-14 08:52:04

(if (member (strcat strA atrB strC) '("122" "212" "221"))
   (progn
      (command "-insert" "s90" sxx_10 "" "" "")
(command "-insert" "kt7" ktx_10 "" "" "")
)
)

vectra 发表于 2018-6-13 10:55:34

(if (or      (and (= ctrA "1")
             (= ctrB "2")
             (= ctrC "2")
      )
      (and (= ctrA "2")
             (= ctrB "1")
             (= ctrC "2")
      )
      (and (= ctrA "2")
             (= ctrB "2")
             (= ctrC "1")
      )
    )
(progn
    (command "-insert" "s90" sxx_10 "" "" "")
    (command "-insert" "kt7" ktx_10 "" "" "")
)
)
是这个意思吗?

张大锤 发表于 2018-6-13 13:07:04

vectra 发表于 2018-6-13 10:55
是这个意思吗?

嗯是这么个意思 就是简洁的写法

Andyhon 发表于 2018-6-13 14:08:02

若非字串而是数值或可
但得考量变量是 1 2 之外时???
(or
   (= ctrA (1- ctrB) (1- ctrC) 1)
   (= (+ CtrB CtrC ctrA) 5)
)

张大锤 发表于 2018-6-13 14:16:33

本帖最后由 张大锤 于 2018-6-13 14:26 编辑

Andyhon 发表于 2018-6-13 14:08
若非字串而是数值或可
但得考量变量是 1 2 之外时???
(or

哦 第一次没看懂 手写了一遍懂了    这么写是挺简洁的 就是好绕脑
a=1
b=2
c=2
A =1 (1-B=1)(1-C=1)   A B C 都等于1 成立
+ A B c =5   5=5 成立


其实A B C就是 3中管属性并非数值
但是2位的答复的确是我想要的 在if里 还是有很多写法的

szmaicy 发表于 2018-6-13 16:30:27

(equal (list "2" "2") (vl-remove "1" (list ctrA ctrB ctrC)))

前生 发表于 2018-6-14 00:03:23

cond

张大锤 发表于 2018-6-14 08:15:49

前生 发表于 2018-6-14 00:03
cond

谢谢朋友 我想学习IF的写法

张大锤 发表于 2018-6-14 09:27:53

lijiao 发表于 2018-6-14 08:52


感谢老铁666
页: [1] 2
查看完整版本: 请教 if 简约写法