内存根据数据的不同类型开辟的这个内存空间叫做变量。
内存 → 图书馆
变量 → 书架
变量名 → 书架编号
数据类型 → 书的类型 (在Au3中常用数据类型:数字、字符串、布尔值 等)
变量值 → 书架里的书
变量名:就是为了能在“书店”中能快速找到“书架”位置取得名字。
在Au3中只有一个叫做 Variant(变量)。 变量可以包含数字或字符串,AutoIt 会根据赋值的类型自动推断变量的类型。 例如:若让两个变量相乘,则它们将被当作数字类型;而试图连接(拼合)两个变量, 则它们将被自动视为字符串类型。
变量命名规则在Au3中,变量名必须以 $ 开头,并且只能包含字母、数字和下划线。例如: $var1 $my_variable
变量声明和作用域
Au3使用Dim、Local和Global关键字来声明变量:
Dim:声明全局变量,作用范围为整个脚本。Local:强制声明局部变量,作用范围为当前函数内部。Global:强制声明全局变量,即使在其他地方也可见。
你也可以不先声明就给变量赋值,这和声明变量是一样的效果。
变量的作用域和生命周期全局变量:在脚本开头且在所有函数之外声明的变量是全局变量,可以在脚本的任意位置读取或更改。局部变量:在函数内部声明的变量是局部变量,仅在该函数内部有效,函数结束时自动销毁。
下面通过一个简单示例来系统的了解一下变量。示例2-1
; 声明全局变量
Global $gVar = "我是全局变量"
$ggVar = "我是什么变量"
; 定义一个函数,演示局部变量的使用
Func MyFunction()
Local $lVar = "我是局部变量"
ConsoleWrite($lVar & @CRLF) ; 输出局部变量
; 尝试访问全局变量
ConsoleWrite($gVar & @CRLF) ; 输出全局变量
ConsoleWrite($ggVar & @CRLF) ; 输出变量
EndFunc
; 调用函数
MyFunction()
; 在函数外部访问局部变量 ---报错
;ConsoleWrite($lVar & @CRLF)
; 在函数外部访问全局变量
ConsoleWrite($gVar & @CRLF)
ConsoleWrite($ggVar & @CRLF)Au3 提供一些 Macros(宏指令), 是 Au3中仅具有只读属性的特殊变量.。
宏指令首位字符为 @ 而不是通常的 $ 字符所以很容易分辨。
和普通的变量一样您可以在表达式中使用它们, 但不能进行赋值操作(因为它们仅具有只读属性)。
预先定义的宏通常为访问系统信息提供方便, 诸如 Windows 目录位置, 或登录的用户名称等等。
通过示例了解宏指令,具体的宏指令可以参考帮助文件。示例2-2
Local $sString = "现在时间是"
ConsoleWrite($sString & @HOUR &":"& @MIN) ; 控制台输出字符串和宏指令的值.数组是一个包含一系列数据元素的变量。 此变量的每个元素可以用相应的索引序号访问 。 AutoIt 数组的第一个元素总是元素 [0]。数组元素按定义的顺序存储,并可以进行排序.
同样我也通过两个简单示例来了解一维数组: 示例2-3
Local $aArray[4] ;使用维度大小来声明一个数组
$aArray[0] = "一叶菩提"
$aArray[1] = "个人网站"
$aArray[2] = "puti.us.kg"
$aArray[3] = "Au3教程"
;遍历显示数组$aArray[4]
For $i=0 To UBound($aArray)-1
ConsoleWrite($aArray[$i]&@CRLF)
Next
ConsoleWrite($aArray[0]) ;输出"一叶菩提"数组也可以是多维的,当你使用多个系列的索引号时,就像excel中的行和列。
二维数组示例:示例2-4
#include <Array.au3>
; 初始化的二维数组
Global $aArray[3][3] = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
; 使用嵌套的For循环遍历二维数组
For $i = 0 To UBound($aArray) - 1 ; $i 迭代行
For $j = 0 To UBound($aArray, 2) - 1 ; $j 迭代列,注意这里使用UBound的第二个参数来获取列数
; 打印当前元素
ConsoleWrite($aArray[$i][$j] & " ")
Next
; 打印完一行后换行
ConsoleWrite(@LF)
Next
_ArrayDisplay( $aArray) ;内部函数在Array.au3 文件中。
ConsoleWrite(@CRLF & $aArray[2][2] & " 是2-2中的数据"&UBound($aArray))在AutoIt中,常量(Constant)是指那些一旦被赋值后,在脚本的剩余部分中保持不变的值。常量的使用可以提高代码的可读性和可维护性,是编写高质量AutoIt脚本的一种推荐做法。在声明常量时,应遵循良好的命名习惯,确保常量名能够准确反映其用途或值,因为它们提供了一种在脚本中多次引用相同值而无需硬编码的方式。
一般我们使用关键字 Const 声明并创建常量。当然也有其他方法,如果以后能用到再详细讲,这里不做说明。
Const $const1 = 1, $const2=12常量不能重新申明为一个已经存在的变量.
通过示例讲解,示例2-5
#include <MsgBoxConstants.au3>
;$MY_SOFTNAME = "软件名称"
Global Const $MY_SOFTNAME = "我的软件名称"
MsgBox(0, "常量值", $MY_SOFTNAME)
MsgBox($MB_ICONQUESTION, "标题", "此消息框在 10 秒后超时或选择<确定>按钮.",10 )
MsgBox(32, "标题", "此消息框在 10 秒后超时或选择<确定>按钮.",10 )AutoIt 支持以下赋值符号, 数学运算符, 比较和逻辑运算符.
运算符 | 描 述 |
|---|---|
| 赋 值 运 算 符 | |
| = | 给变量赋值. 例如 $vVar=5(分配数值 5 到 $vVar) |
| += | 加法赋值. 例如 $vVar+=1(添加 1 到 $vVar) |
| -= | 减法赋值 |
| *= | 乘法赋值 |
| /= | 除法赋值 |
| 连 接 操 作 符 | |
| & | 串联/连接两个字符串. 例如 "one" & 10 (结果等于 "one10") |
| &= | 串联赋值. 例如: $vVar = "one", 然后 $vVar &= 10 ($vVar 现在等于"one10") |
| 数 学 运 算 符 | |
| + | 两个数相加. 例如: 10 + 20 (结果等于 30) |
| - | 两个数相减. 例如: 20 - 10 (结果等于 10)也作为一元负号使用(设置变量的负值) |
| * | 两个数相乘. 例如: 20 * 10 (结果等于 200) |
| / | 两个数相除. 例如: 20 / 10 (结果等于 2) |
| ^ | 幂运算. 例如: 2 ^ 4 (结果等于 16) |
| 比 较 运 算 符 (用于字符串时不区分大小写, 但 == 除外.) | |
| = | 判断两个值是否相等. 例如: If $vVar = 5 Then ,比较字符串时 不区分大小写. |
| == | 判断两个 字符串 是否相等. 区分大小写 如果左右值不是字符串, 则必须转换为字符串. 仅用于需要区分大小写的字符串比较 |
| <> | 判断两个值是否不相等. 比较字符串时 区分大小写. 要做一个区分大小写的不相等比较, 则使用 Not ("string1" == "string2") |
| > | 判断左值是否大于右值. 字符串按字典顺序(lexicographically)进行比较, 即使字符串的内容是数字也如此. |
| >= | 判断左值是否大于或等于右值. 字符串按字典顺序(lexicographically)进行比较, 即使字符串的内容是数字也如此. |
| < | 判断左值是否小于右值. 字符串按字典顺序(lexicographically)进行比较, 即使字符串的内容是数字也如此. |
| <= | 判断左值是否小于或等于右值. 字符串按字典顺序(lexicographically)进行比较, 即使字符串的内容是数字也如此. |
| 逻 辑 运 算 符 | |
| And | 逻辑 And(与) 运算. 例如: If $vVar= 5 And $vVar2 > 6 Then (如果 $vVar 的值为 5 并且 $vVar2 的值大于 6 则条件为 True) |
| Or | 逻辑 Or(或) 运算. 例如: If $vVar = 5 Or $vVar2 > 6 Then (如果 $vVar 的值为 5 或者 $vVar2 的值大于 6 则条件为 True) |
| Not | 逻辑 Not(非) 运算. 例如: Not 1 (不是 1, 则条件为 False) |
| 条 件 运 算 符 | |
| ? : | 依据条件选择表达式. 例如: $condition ? $expression1 : $expression2(如果$condition 为 True 则 $expression1 成立; 否则如果 $condition 为 False 则 $expression2 成立) 参考 Ternary运算符的示例. |
当表达式内含有多个运算符时,其运算的先后顺序由 运算符的优先级来控制.
AutoIt 中运算符的优先级如下所示. 处于同一优先级的两种运算符,则按从左到右的顺序运算
从最高到最低的优先级:
NOT
^
* /
+ -
&
< > <= >= = <> ==
AND OR乘号 * 拥有比加号 + 更高的优先级. 可以使用括号强行首先计算表达式的一部分
例如: (2 + 4) * 10 等于 60.
当使用逻辑运算符 AND, OR 时,请注意以下几点:
例如: If MyFunc1() OR MyFunc2() Then ( 如果 MyFunc1() 返回 true, 则不调用 MyFunc2() ).
上一篇:3.【Au3基础】函数
下一篇:1.【Au3基础】学习前的准备