我想将两个命令作为单行If
- 语句的一部分执行:
虽然下面的代码段运行没有错误,但变量$F_Akr_Completed
未设置为1
,但MsgBox()
正确显示(" F为0")。
$F_Akr_Completed = 0
$PID_Chi = Run($Command)
If $F_Akr_Completed = 0 And Not ProcessExists($PID_Chi) Then $F_Akr_Completed = 1 And MsgBox(1,1,"[Info] Akron parser completed. F is " & $F_Akr_Completed)
知道为什么在没有功能的情况下报告没有语法错误?
答案 0 :(得分:3)
没有错误,因为
If x = x Then x And x
是一个有效的语句,x And x
是一个逻辑表达式。有很多方法可以做到这一点,例如:
If Not ($F_Akr_Completed And ProcessExists($PID_Chi)) Then $F_Akr_Completed = 1 + 0 * MsgBox(1,1,"[Info] Akron parser completed. F is " & 1)
但这是一种糟糕的编码风格。 AutoIt是一种大多数冗长的语言,我建议分开多个语句。
您还可以使用三元运算符分配值:
$F_Akr_Completed = (Not ($F_Akr_Completed And ProcessExists($PID_Chi))) ? 1 : 0
与
相同$F_Akr_Completed = Int(Not ($F_Akr_Completed And ProcessExists($PID_Chi)))