AHK 中 % 符号的用法
AHK 中有一个很特别的符号 %。几乎随便从网上下一段 AHK 代码,就可以看到里边有 % 符号,而且 % 在 AHK 里的用法和所有其他编程语言都不一样,基本靠猜的话是猜不出来的。
用法一:%var%
第一种用法我们在介绍赋值表达式的时候接触过:
a = 123
b = %a%
c = %a%456
当用 = 对变量赋值时,如果一个字符串被两个 % 包围,并且中间没有空格,那么含义是取这个变量的值。
在调用一个命令时,也是这样。
a = 123
MsgBox, %a%
如果我们这样用,Name, xx, yy
,Name 就是命令;如果我们这样用,Name("xx", "yy")
,Name 就是函数。命令和函数的区别我们也会在之后的文章了解到,现在只需要关注命令即可。
注意两个%之间只能有一个单独的变量名,像 x[1]、x.y、x[y]、fun() 等一概不支持。
用法二:% var
% 还有另一种用法,这回它只出现一个,并且 % 的后边有至少一个空格。
a = 123
b = % a
MsgBox, % a
这样用表示 % 后边的内容按表达式来解析。我们可以认为:
b = %a%
MsgBox, %a%
和
b = % a
MsgBox, % a
是一样的,实际上后者更强大一些。
a := 1
b := 2
c := 3; 计算 a + b + c,结果为 6
MsgBox, % a + b + c; 语法错误
; MsgBox, %a + b + c%; 语法正确,但 + 失去计算功能,变成了字符串的一部分
; MsgBox, %a% + %b% + %c%
如果 % 后边不只是一个变量名,而是一个表达式,那么“用法二”有效,“用法一”无效。
使用“用法一”还是“用法二”
我们发现“用法一”和“用法二”的功能上是有重叠的,那么实际情况应该怎么用呢?这个还是因人而异,尽量前后一致即可。但在某些场景“用法一”更方便,某些情况“用法二”更方便,甚至只能用“用法二”。
“用法一”更方便的场景:
; 变量本身包含双引号等特殊字符
c = "%a% %b%"; 多行字符串中包含变量
c =
(
xxx
%a%
%b%
)
“用法二”更方便的场景:
; 字符串中的变量居多
MsgBox, % a " " b " " c " " d
只能用“用法二”的场景:
; 需要使用表达式
MsgBox, % a + b - c
另外如果考虑性能的话,“方法一”是要比“方法二”快二分之一到一倍的,但一般情况瓶颈不应该出现在这里,所以也不用过多在乎性能问题,如果真的是因为在很大的循环里使用而产生性能问题,修改一下也是很轻松的事情。
付费解决 Windows、Linux、Shell、C、C++、AHK、Python、JavaScript、Lua 等领域相关问题,灵活定价,欢迎咨询,微信 ly50247。
AHK 中 % 符号的用法相关推荐
- python中符号的用法_python中的@符号的作用
'@'符号用作函数修饰符是python2.4新增加的功能,修饰符必须出现在函数定义前一行,不允许和函数定义在同一行.也就是说@A def f(): 是非法的.只可以在模块或类定义层内对函数进行修饰,不 ...
- php中符号的用法,关于操作符:PHP中@符号的用法是什么?
我已经看到在某些功能前面使用@,如下所示: $fileHandle = @fopen($fileName, $writeAttributes); 这个符号的用途是什么? 里奇辛德尔和艾登·贝尔都给出了 ...
- java 中符号_谁能告诉我java中符号的用法,见代码
展开全部 大家都知道Vector以及其他的容器可以不加任何修饰地e68a8462616964757a686964616f31333236373765存储任何类型的对象,这给我们带来了极大的方便,也使得 ...
- [AHK]赋值符号:=与=用法总结
正常情况,字符串应该用:=赋值符号来赋值的,字符串用" "括起来 a_str := "good" b_str := "very" . a_s ...
- Python中@符号的用法
用法一:@xxx是注解或者装饰器 可以查看下面的这个博客. python装饰器"你会Python嘛?" "我会!" '那你给我讲下Python装饰器吧!' &q ...
- c 语言中cin用法,c中cin的用法
c语言中 符号的用法你知道吗?下面小编就跟你们详细介绍下c语言中 符号的用法,希望对你们有用. c语言中 符号的用法如下: 1.cin>> 用法1:最基本,也是最常用的用法,输入一个数字: ...
- AHK 中循环的基本用法
在我们重复做一些事情的时候,就需要使用循环了.而 AHK 正是能将复杂的手动工作自动化的工具,循环自然必不可少.但 AHK 中的循环也是多种多样的,我们慢慢道来. 最简单的循环 最简单的情况,我们知道 ...
- 深入理解C# 中 “$” 符号的作用以及用法
前言:$是c# 6.0 的语言特性,功能类似string.format(),更方便的地方在于不要像format一样使用索引,可以直接使用变量.表达式或者方法的执行. 文章目录 一.C#中`$`的作用 ...
- mysql中正则表达式的用法_Mysql中正则表达式Regexp常见用法
Mysql中Regexp常见用法 模糊匹配,包含特定字符串 # 查找content字段中包含"车友俱乐部"的记录 select * from club_content where ...
最新文章
- R方差分析(anova)以及Tukey检验
- Emoji表情符号录入MySQL数据库报错的解决方案
- concurrent.futures dataset
- 基于OpenCL的深度学习工具:AMD MLP及其使用详解
- Jack (Java Android Compiler Kit)
- centos7安装MongoDB(亲测)
- nDPI流量协议分析(应用软件识别)
- 数据分析应该要避免的6个错误
- 9 WM配置-主数据-定义物料分阶段的范围(Staging Area)
- laravel5.6 邮件队列database驱动简单demo
- MVVM框架从WPF移植到UWP遇到的问题和解决方法
- 学hadoop需要什么基础
- SpringBoot 根据条件注入需要的 Bean
- excel图表交互联动_Excel 制作滑动控制联动(Excel数据图表)具体实现方法
- 如何高效填写软件测试缺陷报告?(送缺陷报告模板)
- GCC、GNU到底啥意思?
- 面试拿到外包公司offer该不该去?!
- Vue Bootstrap 结合学习笔记(一)
- Outlook邮箱开源许可-android
- 数模--0-1规划问题~Matlab中 intlinprog函数用法简介