Autohotkey 自动热键:什么';s:=和=赋值运算符之间的差异

Autohotkey 自动热键:什么';s:=和=赋值运算符之间的差异,autohotkey,colon-equals,Autohotkey,Colon Equals,我不太明白自动热键中的:=和=赋值运算符之间的区别 在手册中,=是一种传统作业,:=是一种表达作业。我从未见过有人使用=操作符,只有:= 和下图 你问题的字面答案是:=后面跟一个表达式,=后面跟一个值;这些是等效的: name = John Smith name := "John Smith" 这两种形式都存在的原因是AutoHotKey的传统语法和结构受到批处理语言(如MSDOS批处理文件和unix shell脚本)的影响。这些语言力求尽可能让人可读,因为它们经过了大量修改,通常不需要您在实

我不太明白自动热键中的
:=
=
赋值运算符之间的区别

在手册中,
=
是一种传统作业,
:=
是一种表达作业。我从未见过有人使用
=
操作符,只有
:=

和下图


你问题的字面答案是
:=
后面跟一个表达式,
=
后面跟一个值;这些是等效的:

name = John Smith
name := "John Smith"
这两种形式都存在的原因是AutoHotKey的传统语法和结构受到批处理语言(如MSDOS批处理文件和unix shell脚本)的影响。这些语言力求尽可能让人可读,因为它们经过了大量修改,通常不需要您在实际编程语言中看到的复杂逻辑和结构

以下是执行备份的脚本:

SOURCE = /home
DEST = /mnt/backup
run backup %SOURCE% %DEST%
较新的基于表达式的
:=
运算符更灵活、更强大。但是,语法相对来说更加冗长。在这里,备份使用新样式运算符并实现变量的默认值(不能使用旧的
=
运算符在一行中完成):


如果您所做的只是赋值和执行,那么批处理文件语法更清晰,更不容易出错。但是,如果需要实现更复杂的逻辑,可以使用表达式语法更简洁地实现。

问题的字面答案是,
:=
后面跟一个表达式,
=
后面跟一个值;这些是等效的:

name = John Smith
name := "John Smith"
这两种形式都存在的原因是AutoHotKey的传统语法和结构受到批处理语言(如MSDOS批处理文件和unix shell脚本)的影响。这些语言力求尽可能让人可读,因为它们经过了大量修改,通常不需要您在实际编程语言中看到的复杂逻辑和结构

以下是执行备份的脚本:

SOURCE = /home
DEST = /mnt/backup
run backup %SOURCE% %DEST%
较新的基于表达式的
:=
运算符更灵活、更强大。但是,语法相对来说更加冗长。在这里,备份使用新样式运算符并实现变量的默认值(不能使用旧的
=
运算符在一行中完成):


如果您所做的只是赋值和执行,那么批处理文件语法更清晰,更不容易出错。但是,如果需要实现更复杂的逻辑,可以使用表达式语法更简洁地实现。

好吧,现在这就更有意义了,我很难理解自动热键语法(与javascript或python之类的语法相比),我仍然对
dest:=dest:=dest感到困惑?dest:“/mnt/backup”
。这看起来像一个三元运算符(条件?true:false)。但是看一下等效的脚本
DEST=/mnt/backup
,虽然您是对的,但它看起来不是这样的。第一个示例没有实现默认值。我曾经说明过,在一行简洁的语句中使用表达式语法比使用批处理语法可以做得更多。啊,好吧,现在这变得更有意义了,我很难理解自动热键语法(与javascript或python之类的语法相比),我仍然对
dest:=dest感到困惑?dest:“/mnt/backup”
。这看起来像一个三元运算符(条件?true:false)。但是看一下等效的脚本
DEST=/mnt/backup
,虽然您是对的,但它看起来不是这样的。第一个示例没有实现默认值。我说明了在一行简洁的语句中使用表达式语法可以比使用批处理语法做得更多。