在单行If -statement中执行两个命令

时间:2015-07-16 15:35:37

标签: if-statement autoit

我想将两个命令作为单行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)

知道为什么在没有功能的情况下报告没有语法错误?

1 个答案:

答案 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)))