gpt4 book ai didi

autohotkey - 何时在 AutoHotKey 中使用 % 或 %variable%?

转载 作者:行者123 更新时间:2023-12-05 02:53:47 24 4
gpt4 key购买 nike

我找了很多地方都没有找到答案。在 AutoHotKey 中,我不确定在行首附近使用单个百分号和在两个百分号之间包含变量时的区别。当我使用其中一个或另一个时,我通常会通过反复试验来查找,我希望有人可以阐明其中的区别或解释它的实际作用。

这里有一些实际的例子。

示例 1:我注意到如果您有多个变量和文本,脚本往往会使用前面的百分比。如:

some_val := Clipboard

loop 5
msgbox % "Index:" . A_Index . ", variable:" . some_val

示例2:我也经常看到这个,有时似乎必须使用它。这是真的吗?

some_variable := "test text to send"

Send, %some_variable%

最佳答案

用双百分号包裹是旧版 AHK,基本上没有必要再使用它了。包裹双 % 的唯一理由是在过去会被困在后面,或者也许有人会争辩说在某些情况下它也更方便,或者什么的,但我不买账它。
遗留语法被表达式语法取代。
表达式语法更接近于许多其他语言的行为。 AHK 遗留语法真的是一团糟。

所有遗留命令(例如 MsgBox)在每个参数上都使用旧的遗留语法(除非另有说明)。
如果您在参数的开头指定 % 后跟一个空格,您将强制 AHK 计算该参数的表达式,而不是将其作为遗留文本参数读取。
示例:
消息框,5+5我们使用的是传统命令,我们没有以 % 和空格开始参数,所以我们使用的是传统语法。 MsgBox 将打印文字文本 5+5 而不是 10
MsgBox, % 5+5​​
同样,旧命令,但现在我们强制 AHK 在此处计算表达式,5+5
表达式的计算结果将传递给 MsgBox 命令,MsgBox 将打印 10
如果我们想让 MsgBox 打印文字文本 5+5,并使用表达式语法来实现它,我们会执行 MsgBox, % "5+5"
表达式语法中的引号表示我们正在指定一个字符串。

然后就是知道何时使用表达式语法以及何时使用遗留语法的问题。
默认情况下,您基本上总是处于表达式中。
您可以通过例如使用命令或 = 来分配它。
如果您不清楚命令和函数之间的区别,请看下面的示例:
命令,% 7+3,% MyCoolArray[4],% SomeOtherNiceFunction(),% false
函数(7+3, MyCoolArray[4], SomeOtherNiceFunction(), false)
在命令中,我们指定了 % 后跟一个空格来计算每个参数的表达式,而在函数中,我们不必这样做,因为我们已经在表达式中了。

如果您不清楚 = 之间的区别和 := ,
= 已遗留且已弃用,它将纯文本分配给变量
:= 将表达式的结果分配给变量。

这就是我可以从头顶写下的内容。
如果您有一些更复杂的示例,我可以尝试展示它们。也许将您可能拥有的一些代码转换为表达式语法,使其 100% 摆脱遗留语法。

这里有一个很好的文档页面,您应该阅读一下:
https://www.autohotkey.com/docs/Language.htm

关于autohotkey - 何时在 AutoHotKey 中使用 % 或 %variable%?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61998672/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com