【发布时间】:2018-04-20 11:02:31
【问题描述】:
【问题讨论】:
【问题讨论】:
您的问题的字面答案是:= 后跟一个表达式,= 后跟一个值;这些是等价的:
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%
如果您所做的只是分配和执行,那么批处理文件的语法会更简洁且不易出错。但是,如果您需要实现更复杂的逻辑,您可以使用表达式语法更简洁地实现。
【讨论】:
dest := dest ? dest : "/mnt/backup" 感到困惑。这看起来像一个三元运算符(条件?真:假)。但是看看等效的脚本DEST=/mnt/backup,它看起来并不是那样