有没有办法在AutoHotKey源代码中进行换行?我的代码超过80个字符,我想整齐地分开它们。我知道我们可以用其他语言来做这件事,比如下面的VBA:
If Day(Date) > 10 _
And Hour(Time) > 20 Then _
MsgBox "It is after the tenth " & _
"and it is evening"
AutoHotKey中是否存在源代码换行符?我使用旧版本的AutoHotKey,版本1.0.47.06
答案 0 :(得分:5)
文档中有Splitting a Long Line into a Series of Shorter Ones部分:
长线可以分为较小的一组 提高可读性和可维护性。这并没有减少 脚本的执行速度,因为这些行在内存中合并了 脚本启动的那一刻。
方法#1 :以"和","或",||,&&,逗号或a开头的行 句点自动与其正上方的行合并(in v1.0.46 +,除了以外的所有其他表达式运算符都是如此 ++和 - )。在下面的示例中,第二行附加到第一行,因为它以逗号开头:
FileAppend, This is the text to append.`n ; A comment is allowed here.
, %A_ProgramFiles%\SomeApplication\LogFile.txt ; Comment.
同样,以下行将合并为一行 因为最后两个以"和"开头或"或":
if (Color = "Red" or Color = "Green" or Color = "Blue" ; Comment.
or Color = "Black" or Color = "Gray" or Color = "White") ; Comment.
and ProductIsAvailableInColor(Product, Color) ; Comment.
三元运算符也是一个很好的候选者:
ProductIsAvailable := (Color = "Red")
? false ; We don't have any red products, so don't bother calling the function.
: ProductIsAvailableInColor(Product, Color)
虽然上面示例中使用的缩进是可选的,但它可能会有所改进 通过指明哪些线属于它们之上的线来清晰。它,它 没有必要为以#开头的行包含额外的空格 单词" AND"和"或&#34 ;;程序会自动执行此操作。最后, 可以在任何一个之间或之间添加空白行或注释 上面例子中的行。
方法#2 :此方法应用于合并大量行 或者当这些行不适合方法#1时。虽然这种方法 对于自动更换热字串特别有用,它也可以使用 任何命令或表达。例如:
; EXAMPLE #1:
Var =
(
Line 1 of the text.
Line 2 of the text. By default, a line feed (`n) is present between lines.
)
; EXAMPLE #2:
FileAppend, ; The comma is required in this case.
(
A line of text.
By default, the hard carriage return (Enter) between the previous line and this one will be written to the file as a linefeed (`n).
By default, the tab to the left of this line will also be written to the file (the same is true for spaces).
By default, variable references such as %Var% are resolved to the variable's contents.
), C:\My File.txt
在上面的例子中,有一系列的界限 顶部和底部由一对括号组成。这被称为a 继续部分。请注意底线包含 FileAppend在右括号后的最后一个参数。这个 练习是可选的;它是在这样的情况下完成的,所以逗号 将被视为参数分隔符而不是文字逗号。
请阅读文档链接以获取更多详细信息。
因此,您的示例可以重写如下:
If Day(Date) > 10
And Hour(Time) > 20 Then
MsgBox
(
It is after the tenth
and it is evening
)
答案 1 :(得分:2)
我不知道这样做的一般方法,但似乎你可以打破一条线并用操作符开始虚线的其余部分(例如下一个实线)。只要第二行(以及第三,第四等,如果适用)以(可选的空格加)运算符开头,AHK就会将整个事物视为一行。
例如:
hello := "Hello, "
. "world!"
MsgBox %hello%
在第二行的逻辑开头存在连接运算符.
,这使得AHK将这两行视为一。
(我也尝试离开操作员和第一行的结尾,用双引号字符串开始第二行;这不起作用。)