带有和不带花括号的autohotkey if语句

时间:2018-03-27 07:49:13

标签: autohotkey

我不明白Autohotkey IfIf(...)之间的区别 根据我发现的一切,If(...)表现为"期待"但是有一些东西与我的代码无关。

下面不起作用。似乎永远不会评估If中的语句,%TimeString%永远不会被设置,也不会输出任何内容:

CapsLock & T::
    Input Key, L1
    If (Key=T)
    {
        FormatTime, TimeString,, HHmm
    }
    Send %TimeString%   

下面工作,设置了%TimeString%并输出了时间。

CapsLock & T::
    Input Key, L1
    If Key=T
        FormatTime, TimeString,, HHmm
    Send %TimeString%   

2 个答案:

答案 0 :(得分:5)

Autohotkey有两种不同的语法:legacyexpression。这也会影响if statement

使用括号时,会使用if (expression)并将Key与不存在的 变量 T进行比较并且与不等于 T 的空变量相同。您需要将其更改为If (Key="T"),然后将变量Key与字符串"T"进行比较,它将起作用。

在第二种情况下,您使用的是传统(遗留)If,它将变量Key与字符串T进行比较,因为它们相同,所以它可以正常工作。

花括号{ }只是定义一个块,当块只包含一行时,它们什么也不做,什么都不做。

答案 1 :(得分:1)

您确定此代码与您的脚本相同吗? Beause

Tjs := T
if (Tjs=T)
{
   MsgBox true
}

对我来说很好。