satishrajdev 发表于 2022-7-6 03:35:12

IF中的问题

以下代码有错误,请给我一个解决方案:-
 
(Defun ProceedT ()
(if (AND (/= scty "V")
   (/= scty "v")
   (/= scty "E")
   (/= scty "e")
   )
(alert "Invalid Option Please Enter Correct Option")
   )
)

(if (AND (= scty "V") (= scty "v"))
   (setq proceed T)
)
(if (AND (= scty "E") (= scty "e"))
   (progn (setq proceed T)
   (setq export 1)
   )
)
)
 
如果我的scty是e或e
它正在返回零

sepultura 发表于 2022-7-6 03:48:11

我认为你对最后两个假设有问题。将“AND”替换为“OR”。因为你们不能有相同的时间“E”和“E”条件。

satishrajdev 发表于 2022-7-6 03:52:35

谢谢sepultura。。。。。。。。。。。。。。成功了:拇指支撑:

Tharwat 发表于 2022-7-6 03:56:05

在我看来,这就足够了。
 

(= (strcase scty) "E")

Lee Mac 发表于 2022-7-6 04:06:28

我建议cond:
 
(defun proceedt ( )
   (setq scty (strcase scty))
   (cond
       (   (= "V" scty)
         (setq proceed t)
       )
       (   (= "E" scty)
         (setq proceed t
               export1
         )
       )
       (   (alert "Invalid option!\nPlease enter correct option."))
   )
)

satishrajdev 发表于 2022-7-6 04:12:48

谢谢Tharwat&Lee Mac先生。。。。。。。。。。

pBe 发表于 2022-7-6 04:17:29

为什么不阻止用户在开始时指定错误的值呢?

David Bethel 发表于 2022-7-6 04:24:49

 
+1
 
此外,(cond)测试也足以:
 

(cond ((not (member scty '("E" "e" "V" "v")))
      (alert "Invalid Option"))
       ((member scty '("V" "v"))
      (setq proceed T))
       ((member scty '("E" "e"))
      (setq proceed T))
       (T
      (setq export 1)))

 
 
-大卫

neophoible 发表于 2022-7-6 04:31:15

我也同意这一点。AutoCAD让您可以非常高效地模拟其输入样式。

neophoible 发表于 2022-7-6 04:35:49

我也喜欢cond和member,如果不使用getkword选项,我也会这样做:
 
在本例中,根据cond的返回值设置继续(alert返回nil)。
页: [1]
查看完整版本: IF中的问题