AutoHotKey神奇的符号

作者: 河许人 | 来源:发表于2016-11-04 21:10 被阅读276次
    符号.jpg
    有一种神奇叫做符号,它抽象、多变,楚然用之不明觉厉,看别人用之,逼格满满啊!真是让人又爱又恨,弃之不忍、欲罢不能啊!程序就是这个玩意的逻辑化,autohotkey又将它推向了极致!

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

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

    第一弹:风骚的=

    =是啥嘞?

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

    ==又是啥嘞?

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

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

    ~=这个又是啥玩意呢?

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

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

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

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

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

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

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

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

    风骚.jpg

    第二弹:神奇的%

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

    咋用嘞??

    老何曰:第一种用法我们在介绍赋值表达式的时候接触过,当用 = 对变量赋值时,如果一个字符串被两个 % 包围,并且中间没有空格,那么含义是取这个变量的值。

    a = 123
    b = %a%
    c = %a%456
    MsgBox, %a%
    

    % 还有另一种用法,这回它只出现一个,并且 % 的后边有至少一个空格。这样用表示 % 后边的内容按表达式来解析,也叫强制执行表达式,有强迫症的童鞋好多多使用额!!

    a = 123
    

    b = % a
    MsgBox, % a 和 MsgBox, %a% 是一样的,实际上后者更强大一些。

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

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

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

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

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

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

    ; 字符串中的变量居多
    

    MsgBox, % a " " b " " c " " d

    只能用“用法二”的场景:

    ; 需要使用表达式
    MsgBox, % a + b - c
    

    另外如果考虑性能的话,“方法一”是要比“方法二”快二分之一到一倍的,但一般情况瓶颈不应该出现在这里,所以也不用过多在乎性能问题,如果真的是因为在很大的循环里使用而产生性能问题,修改一下也是很轻松的事情。

    第三弹:没有存在感的

    任何命令中的首个逗号可以省略 (除非首个参数为空或以 := 或 = 开始, 或命令单独处于延续片段的顶部). 例如:

    MsgBox  This  is ok.
    MsgBox,This  is ok.
    

    啊哈哈!第三弹是个小弹头哈,不过这个可能解开了很多人的疑惑呢,毕竟autohotkey中这个可有可无的东西有点打乱了我们飘逸严谨的态度。auutohotkey的神奇符号还有很多,我这里就是抛块砖啦!大家可以慢慢去雕琢自己的与玉喽!

    相关文章

      网友评论

        本文标题:AutoHotKey神奇的符号

        本文链接:https://www.haomeiwen.com/subject/kfuwuttx.html