官方澳门新永利下载:AutoHotKey美妙的符号,符号的用法

AHK 中有一个很特别的符号 %。几乎随便从网上下一段 AHK
代码,就可以看到里边有 % 符号,而且 % 在 AHK
里的用法和所有其他编程语言都不一样,基本靠猜的话是猜不出来的。

官方澳门新永利下载 1符号.jpg有一种神奇叫做符号,它抽象、多变,楚然用之不明觉厉,看别人用之,逼格满满啊!真是让人又爱又恨,弃之不忍、欲罢不能啊!程序就是这个玩意的逻辑化,autohotkey又将它推向了极致!

第一种用法我们在介绍赋值表达式的时候接触过:

所谓符号呢,可以是图形图像、文字组合,也不妨是声音信号、建筑造型,甚至可以是一种思想文化、一个时事人物。例如“=”在数学中是等价的符号,“紫禁城”在政治上是中国古代皇权的象征。总的来说,符号的意思就是一种“特征纪念”,就像绰号是为了让人容易记住,方便辨认的称呼。你记张三李四可能麻烦,但你记“大胡子”、“小眼镜儿”就方便多了,所以符号也可以说是由人的认识习惯造成的。

a = 123b = %a%c = %a%456

autohotkey将符号用到了极致,灵活、奇妙。不过不熟悉的话,只能臣妾心里苦了。这节课呢我们就一起来领略一下autohotkey符号的风骚吧!

当用 = 对变量赋值时,如果一个字符串被两个 %
包围,并且中间没有空格,那么含义是取这个变量的值。

=是啥嘞?

在调用一个命令时,也是这样。

老何曰:两种用法比较和赋值,前边文案中有讲解,不会的话可以去看看哈!

a = 123MsgBox, %a%

==又是啥嘞?

如果我们这样用,Name, xx, yy,Name
就是命令;如果我们这样用,Name("xx", "yy"),Name
就是函数。命令和函数的区别我们也会在之后的文章了解到,现在只需要关注命令即可。

老何曰:区分大小写的比较。

注意两个%之间只能有一个单独的变量名,像 x[1]、x.y、x[y]、fun()
等一概不支持。

>= 、<= 、!=就不用你说了大家都知道,哈哈。

% 还有另一种用法,这回它只出现一个,并且 % 的后边有至少一个空格。

~=这个又是啥玩意呢?

a = 123b = % aMsgBox, % a

老何曰:对 RegExMatch
的简写,哈哈看不懂吗?这是一个函数,有兴趣的话可以去看下帮助文档喽!纳尼

这样用表示 % 后边的内容按表达式来解析。我们可以认为:

*:=、+=、-=、=、/=、//=、.=、|=、&=、^=、>>=、<<=
哈哈,等号家族啊!老何曰:你确实挺会总结,这些都是赋值的表达形式.
对变量的内容进行运算, 然后把结果保存到同一个变量中 .
最简单的赋值运算符为 冒号等号 , 它把表达式的结果保存到变量中.

b = %a%MsgBox, %a%

+=官方澳门新永利下载,和-= 运算符是从变量中增加或减少值的一种简写形式.
例如,Var+=2Var:=Var+2
会得到相同的结果(不过前者执行的更好)。同样地,使用Var++、Var–、++Var
或 –Var可以让变量增加或减小 1。

*=和 /=运算符是用变量的值乘以或除以另一个值的一种简写形式.
如,Var*=2Var:=Var*2
会得到相同的结果。其他的都是这个组合方式,例如,Var //= 2执行向下舍除,
把 Var 除以 2, 然后把结果保存回 Var. 同样地, Var .= "abc"
Var := Var . "abc" 的一种简写形式.

b = % aMsgBox, % a

与其他大多数运算符不同, 赋值运算是从右往左执行的. 因此,
Var1 := Var2 := 0 这个语句中首先把 0 赋值给 Var2, 然后把 Var2
赋值给 Var1.

是一样的,实际上后者更强大一些。

如果使用赋值运算的结果作为其他某些运算符的输出, 那么输入的值是变量自身.
例如, 如果变量 Var 新增值后大于 50, 那么表达式 > 50 结果为真.
这样还允许赋值被作为 ByRef传递或获取它的地址, 例如:&.

a := 1b := 2c := 3; 计算 a + b + c,结果为 6MsgBox, % a + b + c; 语法错误; MsgBox, %a + b + c%; 语法正确,但 + 失去计算功能,变成了字符串的一部分; MsgBox, %a% + %b% + %c%

需要避免语法错误或提供更直观的操作时, 会自动提升赋值运算符的优先级.
例如:not x:=y 等价于 not. 同样地, ++Var := X 等价于 ++;而
Z>0 ? X:=2 : Y:=2 等价于 Z>0 ? :.

如果 %
后边不只是一个变量名,而是一个表达式,那么“用法二”有效,“用法一”无效。

这个=符号太风骚,简单展开就是一大段啊!

我们发现“用法一”和“用法二”的功能上是有重叠的,那么实际情况应该怎么用呢?这个还是因人而异,尽量前后一致即可。但在某些场景“用法一”更方便,某些情况“用法二”更方便,甚至只能用“用法二”。

官方澳门新永利下载 2风骚.jpg

“用法一”更方便的场景:

AHK 中有一个很特别的符号 %。几乎随便从网上下一段 AHK
代码,就可以看到里边有 % 符号,而且 % 在 AHK
里的用法和所有其他编程语言都不一样,基本靠猜的话是猜不出来的。关键是他能解决一些特殊的问题!灵活运用,好神奇的样子!!

; 变量本身包含双引号等特殊字符c = "%a% %b%"; 多行字符串中包含变量c =(xxx%a%%b%)

咋用嘞??

发表评论

电子邮件地址不会被公开。 必填项已用*标注