这个表达是做什么的? Gui%(MainGui:=!MainGui)吗? “隐藏”:“显示”

时间:2019-04-21 08:08:12

标签: if-statement timer autohotkey

我在以下线程上找到此代码:Suspending, Pausing, Hiding, Pulling Up GUI Window

Gui % (MainGui:=!MainGui) ? "Hide" : "Show"

它有什么作用?我猜这对于if expression来说是一种简单的hotkeys,但是在两页上的示例中,我看不到它的位置。

如果使用SetTimer,则只有将该代码放在子例程中,计数器才会增加。如果放在外面,则计数器停止。

Gui +LastFound +AlwaysOnTop +ToolWindow -Caption
Gui, Add, Text, vcounter, 00000
Gui, Show, NoActivate 

SetTimer, Update, 100 ; 100 ms
Update:
    counter++
    GuiControl,, counter, %counter%
    ^esc::Gui % (MainGui:=!MainGui) ? "Hide" : "Show"
Return 

1 个答案:

答案 0 :(得分:1)

这是一种operator in expressions

  

三元运算符 [v1.0.46 +]。该运算符是简写替换   用于if-else语句。它评估左侧的条件   确定其两个分支中的哪个应成为其最终结果。   例如,var:= x> y? 2:3如果x大于2,则将2存储在Var中   y;否则,它会存储3。   评估分支(请参阅短路评估)。

命令^esc::Gui % (MainGui:=!MainGui) ? "Hide" : "Show"有两个部分。

  1. (MainGui:=!MainGui)切换变量MainGui的值 相反,通常是从TrueFalse,反之亦然。
  2. 使用三元运算符的标准格式来检查 变量MainGui。如果是True,则使用值Hide,     如果它是False,则使用值Show
在所有评估之后,

^esc::Gui % (MainGui:=!MainGui) ? "Hide" : "Show"转换为以下之一:
1.如果MainGuiTrue ==> Gui Hide
2.如果MainGuiFalse ==> Gui Show

简短说明:^esc热键会在Gui处于活动状态时将其隐藏,在它处于隐藏状态时将其显示。