Autohotkey::= 和 = 赋值运算符有什么区别
Autohotkey: What's the difference between := and = assignment operator
我不太明白 AutoHotKey 中 :=
和 =
赋值运算符的区别。
说明书上,=
是传统赋值,:=
是表达式赋值。我从未见过有人使用 =
运算符,只有 :=
。
Reference 和下图
您问题的字面答案是 :=
后跟一个 表达式 并且 =
后跟一个 值;这些是等价的:
name = John Smith
name := "John Smith"
这两种形式存在的原因是因为 AutoHotKey 的遗留语法和结构受到 MSDOS 批处理文件和 unix-shell 脚本等批处理语言的影响。这些语言力求尽可能地具有人类可读性,因为它们经过大量修改,通常不需要您在真实编程语言中看到的复杂逻辑和结构。
这是执行备份的脚本:
SOURCE = /home
DEST = /mnt/backup
run backup %SOURCE% %DEST%
较新的基于表达式的 :=
运算符更加灵活和强大。然而,语法相对更冗长。这里使用新式运算符进行备份并实现变量的默认值(使用旧的 =
运算符不能在一行中完成):
source := source ? source : "/home"
dest := dest ? dest : "/mnt/backup"
command := "backup " + source + " " + dest
run %command%
如果您所做的只是赋值和执行,批处理文件的语法会更清晰且不易出错。但是,如果您需要实现更复杂的逻辑,则可以使用表达式语法更简洁地实现。
我不太明白 AutoHotKey 中 :=
和 =
赋值运算符的区别。
说明书上,=
是传统赋值,:=
是表达式赋值。我从未见过有人使用 =
运算符,只有 :=
。
Reference 和下图
您问题的字面答案是 :=
后跟一个 表达式 并且 =
后跟一个 值;这些是等价的:
name = John Smith
name := "John Smith"
这两种形式存在的原因是因为 AutoHotKey 的遗留语法和结构受到 MSDOS 批处理文件和 unix-shell 脚本等批处理语言的影响。这些语言力求尽可能地具有人类可读性,因为它们经过大量修改,通常不需要您在真实编程语言中看到的复杂逻辑和结构。
这是执行备份的脚本:
SOURCE = /home
DEST = /mnt/backup
run backup %SOURCE% %DEST%
较新的基于表达式的 :=
运算符更加灵活和强大。然而,语法相对更冗长。这里使用新式运算符进行备份并实现变量的默认值(使用旧的 =
运算符不能在一行中完成):
source := source ? source : "/home"
dest := dest ? dest : "/mnt/backup"
command := "backup " + source + " " + dest
run %command%
如果您所做的只是赋值和执行,批处理文件的语法会更清晰且不易出错。但是,如果您需要实现更复杂的逻辑,则可以使用表达式语法更简洁地实现。