3、变量与数据类型:变量定义与作用域、字符串/数字/布尔类型、列表与字典、数据类型转换

好,咱们进入第三章。这一章可以说是RPA开发的“地基”。

你想想看,不管多复杂的自动化流程,本质上都是在处理数据。而数据怎么存、怎么用、怎么变,全靠变量和数据类型来搞定。我见过不少新手,写流程写到一半卡住了,一查原因,往往是变量作用域搞混了,或者数据类型没对上。

今天咱们就把这块彻底吃透。

3.1 变量定义与作用域

变量,说白了就是个“容器”。你把数据放进去,给它起个名字,后面就能随时拿出来用。

变量定义:在RPA工具(比如UiPath、影刀)里,定义变量通常就两步:起个名字,选个类型。

// 伪代码示例
变量名: userName
类型: String
默认值: "张三"

我个人习惯,变量名一定要见名知意。别用 abc 这种,三个月后你自己都看不懂。

作用域:这个概念很重要。作用域决定了变量“能活多久”、“能在哪用”。

  • 全局作用域:在整个流程里都能访问。适合放一些全局配置,比如数据库连接字符串。
  • 局部作用域:只在某个序列(Sequence)或流程块里有效。出了这个块,变量就“消失”了。
⚠️ 避坑指南
我曾经在一个大项目里,图省事把所有变量都设成了全局。结果流程跑着跑着,变量值被莫名其妙改了,排查了整整一个下午。后来发现是某个子流程里不小心重名了。
记住:能用局部,就别用全局。这是血的教训。

3.2 字符串、数字、布尔类型

这三种是RPA里最常用的基础类型,咱们一个一个说。

3.2.1 字符串(String)

字符串就是文本。比如“你好”、“订单号12345”。在RPA里,字符串操作占了半壁江山。

// 字符串拼接
fullName = "张" + "三"   // 结果是 "张三"

// 字符串截取
orderId = "ORD-2024-001".Substring(4, 4)  // 结果是 "2024"

// 字符串替换
text = "Hello World".Replace("World", "RPA")  // 结果是 "Hello RPA"

我建议你熟练掌握字符串的常用方法。我在做电商订单抓取时,80%的字段清洗工作都是在处理字符串。

3.2.2 数字(Int32、Double)

数字类型分两种:整数(Int32)和小数(Double)。

// 整数运算
count = 10 + 5   // 结果是 15

// 小数运算
price = 19.99 * 3   // 结果是 59.97

// 注意:整数相除可能得到小数
result = 10 / 3   // 结果是 3.333...
💡 小技巧
做金额计算时,尽量用Double类型。我遇到过用Int32算价格,结果0.99被截断成0,客户投诉说少收了钱。

3.2.3 布尔(Boolean)

布尔类型只有两个值:True 和 False。它通常用在条件判断里。

// 布尔变量
isLoginSuccess = True
isFileExists = False

// 用在条件里
If isLoginSuccess Then
    // 执行后续操作
End If

说白了,布尔就是“是”或“否”的开关。我在做登录流程时,就用一个布尔变量来判断登录是否成功,简单又可靠。

3.3 列表与字典

单个数据用变量,一堆数据就得用集合了。RPA里最常用的是列表和字典。

3.3.1 列表(List)

列表就是一组有序的数据。你可以把它想象成一个购物清单,按顺序放着。

// 定义列表
fruitList = {"苹果", "香蕉", "橘子"}

// 添加元素
fruitList.Add("西瓜")

// 获取元素
firstFruit = fruitList(0)   // 结果是 "苹果"

// 遍历列表
For Each fruit In fruitList
    Console.WriteLine(fruit)
Next

我个人习惯,处理Excel里的多行数据时,先把每行数据存到列表里,再统一处理。这样代码结构清晰,也方便调试。

3.3.2 字典(Dictionary)

字典是键值对的集合。每个元素都有一个唯一的“键”和对应的“值”。

// 定义字典
userInfo = {"姓名": "张三", "年龄": 30, "城市": "北京"}

// 获取值
userName = userInfo("姓名")   // 结果是 "张三"

// 添加键值对
userInfo("电话") = "13800138000"

// 检查键是否存在
If userInfo.ContainsKey("邮箱") Then
    // 存在则处理
End If
📌 重点记忆
列表用索引(0,1,2...)访问,字典用键(Key)访问。
列表适合“按顺序”的数据,字典适合“按名称”查找的数据。

3.4 数据类型转换

RPA里经常需要把一种类型转成另一种。比如从文本框里读到的“123”是字符串,但你要做加法运算,就得转成数字。

常见的转换场景:

原类型 目标类型 转换方法 示例
String → Int32 数字 CInt() CInt("123") → 123
String → Double 小数 CDbl() CDbl("19.99") → 19.99
Int32 → String 文本 .ToString() 123.ToString() → "123"
String → Boolean 布尔 CBool() CBool("True") → True
⚠️ 避坑指南
我曾经在做一个财务对账流程时,从系统里读到的金额是 "1,234.56" 这种带千分位逗号的字符串。直接用 CDbl() 转换会报错。
正确做法:先去掉逗号,再转换。
amount = CDbl("1,234.56".Replace(",", ""))
嗯,这里要注意,数据源的格式千奇百怪,转换前一定要先清洗。

隐式转换 vs 显式转换:

  • 隐式转换:RPA自动帮你转。比如字符串和数字拼接时,数字会自动转成字符串。但我不建议依赖这个,容易出bug。
  • 显式转换:你手动调用转换函数。我建议任何时候都使用显式转换,代码更安全,别人也看得懂。
💡 我的习惯
每次从UI界面获取数据后,第一件事就是做类型转换和校验。比如从输入框拿到“年龄”,先转成Int32,再检查是否在合理范围内(比如0-150)。
这样能拦截掉90%的运行时错误。

好了,这一章的内容就是这些。变量和数据类型是RPA开发的基石,你花时间把它搞透,后面的流程控制、异常处理学起来会轻松很多。下一章咱们聊聊流程控制——怎么让机器人“动脑子”做决策。