RPA自动化办公06——Uibot中的UB编程语言基础

news/2024/11/24 19:48:26/

参考:UB语言参考_UiBot开发者指南


虽然Uibot用命令就行,但是编程习惯会让程序员们更喜欢看源代码,有时候写源代码会更加方便,所有要学习UB的语言基础。

它很简单,和Python很像,下面简单了解一个各种基础语法。


注释

Dim定义一个变量,可以顺便赋值,如果需要换行可以打反斜杠:

Dim a= \
1

注释不是“#”号,而是:

// 这里是注释
/*
这里
也是
注释
*/

 


变量和数据类型

和一般语言差不多,UB有整形数,浮点数,布尔型,字符串等变量

a = 1           // a是整数型变量
a = &HFF        // a还是整数型变量
a = True        // a是布尔型变量。作为动态类型语言,a的类型可以随时变化 
a = FALSE       // a是布尔型变量,注意True和False都不区分大小写
a = 'UiBot'     // a是字符串型变量
a = "UiBot
RPA"            // a是字符串型变量,字符串中可以换行
a = null        // a是空值型变量,可以写为Null、NULL或null(不区分大小写)

定义一个变量的方式:

Dim 变量名

赋值方式:

Dim 变量名=值

定义多个变量

Dim 变量名1 = 值1, 变量名2
Dim 变量名1 = 值1, 变量名2 = 值2

定义常量:

Const 常量名=值, 常量名=值

常量和变量的唯一区别是,常量只能在定义时指定一次值,后面不允许再修改。

Dim a               // 定义名为a的变量,暂不赋值
Dim b = 1           // 定义名为b的变量,并赋值为1 
Dim c, d = True     // 定义名为c和d的两个变量,为d赋值True
Const e = 'UiBot'   // 定义名为e的常量,为其赋值为字符串’UiBot’
Const f             // 错误:常量必须有初始赋值

 


复合数据类型

UB里面两种复合数据类型,数组和字典,和Python的列表和字典是一样的。

数组:

Dim 数组变量 = [值1, 值2, 值3, 值4]

字典:

{ 名字1:值1, 名字2:值2, 名字3:值3 }

其中 名字 只能是字符串, 可以是任意类型的表达式。而不像Python,py里面的字典可以是任何形式。

索引方式和py是一样的:变量名[索引1],例如:

Dim 变量 = [486, 557, 256]                      // 变量可以用中文命名,初值是一个数组
a = 变量[1]                                     // 此时a被赋值为557
变量 = {"key1":486, "key2":557, "key3":256}     // 变量的类型改为一个字典
a = 变量["key1"]                                // 此时a被赋值为486

注意:在引用数组或字典中的元素时,数组的索引只能是整数类型,用0作为起始索引;字典的索引只能是字符串类型。如果未能正确的使用,会在运行时报错。

数组或者字典的引用是可以嵌套的,如果要引用数组中的数组(即多维数组),或者字典中的数组,可以继续在后面写新的方括号。范例:

变量 = {"key1":486, "key2":557, "key3":256}     // 变量的类型为一个字典
变量["key4"] = [235, 668]                       // 往字典中增加一个新值,该值是一个数组
//此时,字典中的内容为 {"key1":486, "key2":557, "key3":256, "key4":[235, 668]}
a = 变量["key4"][0]                             // 此时a被赋值为235

 


运算符

 


条件语句 

当条件满足时,会执行条件之后的语句块,否则,语句块不会执行。Else后面的语句块则会在前面所有条件都不满足的时候,才会执行。

If 条件1语句块1
ElseIf 条件2语句块2
Else语句块3
End If

 


选择分支语句

根据一定的条件,选择多个分支中的一个。先计算Select Case后面的表达式,然后判断是否有某个Case分支和这个表达式的值是一致的。如果没有一致的Case分支,则执行Case Else(如果有)后面的语句块。例如:

Select Case Time.Month()            // 取得当前时间中的月份Case 1,3,5,7,8,10,12            // 如果是1、3、5、7、8、10、12月DayOfMonth = 31             // 当月有31天Case 4,6,9,11                   // 如果是4、6、9、11月DayOfMonth = 30             // 当月有30天Case Else                       // 如果是其他(也就是2月)DayOfMonth = 28             // 当月有28天(不考虑闰年的情况)
End Select
TracePrint(DayOfMonth)

 


条件循环语句

主要是while循环

前置条件成立则循环

Do While 条件语句块
Loop

前置条件不成立则循环

Do Until 条件语句块
Loop

后置条件成立则循环

Do语句块
Loop While 条件

无限循环

Do语句块
Loop

 


计次循环语句

就是For循环,一般我都用这种循环方式

For 循环变量 = 起始值 To 结束值 Step 步长语句块
Next

例如:

Dim count = 0               // 定义变量count
For i=1 To 100              // 每次循环,变量i都会加1。这里变量i不需要定义count = count + i
Next
TracePrint(count)           // 这里会显示1+2+3+…+100的结果,即5050

 


遍历语句

循环数组或字典的对象,遍历循环语句可以用于处理数组、字典中的每一个元素。遍历循环语句有以下两种形式:

For Each 循环变量 In 数组或字典语句块
Next

或者:

For Each 循环变量1, 循环变量2 In 数组或字典语句块
Next

在这种形式的循环语句中,会自动遍历数组、字典中的每一个索引和值,并将其分别置入循环变量1循环变量2中,直到遍历完成为止。

和计次循环语句类似,在遍历循环语句中,循环变量可以不用Dim语句定义,直接使用,但在循环结束后就不能再使用了。

例如:

Dim days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] // 定义数组型变量days
Dim count = 0   
For Each i In days             // 每次循环,变量i的值分别为days中的每个值 count = count + i          // 把数组中的每个值依次加起来
Next
TracePrint(count)              // 这里会显示一年中每个月的天数的累加和,即365

 


跳出语句

主要是break和continue,用法和python一样

Dim days = { '一月':31, '二月':28, '三月':31, '四月':30, '五月':31, '六月':30, '七月':31, '八月':31, '九月':30, '十月':31, '十一月':30, '十二月':31 }  // 定义字典型变量daysFor Each i,j In days            // 每次循环,变量i, j分别为days中每个名字和值If j Mod 2 = 0              // 如果j是偶数Continue             // 结束本次循环,开始下一次循环End IfTracePrint(i)               // 把days中的名字(其值不是偶数)显示出来
Next

 


函数定义

Function 函数名(参数定义1, 参数定义2)语句块
End Function

在函数定义中,要退出函数并返回,采用以下写法:

Return 返回值

例如

Function Add(x, y=1)        // 定义了两个参数的函数,第二个参数有默认值Return x + y            // 返回值为x+y的值
End Function

调用函数的格式如下:

返回 = 函数名(表达式1, 表达式2)

 


导模块

和py一样

Import 模块名

 


异常

如果不希望流程在发生异常的时候终止,可以采用以下语句对异常进行处理:

Try语句块
Catch 变量名语句块
Else语句块
End Try

如果在Try后面的语句块中发生了异常,会跳到Catch后面的语句块中执行。如果在Try语句块中没有发生异常,且定义了Else语句块(当然,也可以省略Else语句块),则会跳到Else语句块中执行。

Catch语句后面的变量名可以省略。如果不省略,可以不用Dim语句提前定义,当发生异常时,这个变量的值是一个字典,其中包含“File”、“Line”和“Message”三个字段,分别代表发生异常的文件名、发生异常的行号、异常包含的信息。


http://www.ppmy.cn/news/21584.html

相关文章

南京小米java面经(一面)

目录1.java支持多继承吗2.线程的生命周期3.线程和进程的区别4.单例模式有几种5.写一下双重锁的单例6.jvm有哪些区域7.jvm哪些区域是线程共享的,哪些是线程私有的8.gc中判断对象可回收的方式有哪些9.gc垃圾回收算法有哪些10.哪些对象可以作为gc root11.gc中的引用计数…

POE交换机全方位解读(中)

POE供电距离到底怎么算 只针对符合IEEE802.3af/at 标准PoE设备 ① 网线对供电距离的影响 首先我们先来看下表IEEE802.af和IEEE802.3at标准中对Cat5e网线要求: 说明:Type 1 value和Type 2 value 分别指IEEE802.3af和IEEE802.3at的要求。 从表中可以看出&a…

tf.keras.layers.Embedding() 详解

Embedding layery 参数如下: tf.keras.layers.Embedding(input_dim,output_dim,embeddings_initializer"uniform",embeddings_regularizerNone,activity_regularizerNone,embeddings_constraintNone,mask_zeroFalse,input_lengthNone,**kwargs ) 输入…

PowerCLi 批量多esxi主机创建登陆用户

官网PowerCLI参数配置参考 New-VMHostAccount 创建用户参考New-VIRole 创建权限组参考Get-VIPrivilege 查询所有角色层配置信息参考创建批量多主机esxi登陆用户一键脚本 <

【string类的简单模拟实现】

目录 1 类中成员变量的声明 2 迭代器 3 一些常用接口 4 六大默认函数 4.1 构造 4.2 拷贝构造 4.3 赋值运算符重载 4.4 析构 5 开空间&&增删查改 6 其他运算符重载 1 类中成员变量的声明 通过上一篇文章对string类的简单使用相信大家对于string类中成员变量已…

【快速开始】vuejs环境搭建第一个项目

本篇包含vuejs环境安装以及通过vue客户端快速创建运行第一个项目。(注&#xff1a;以下内容均已windows平台为基准) 目录&#xff1a; 一、安装nodejs 二、配置国内源加速 三、安装vue客户端 四、创建第一个应用 1、安装nodejs&#xff1a; 1.1、下载 官网下载地址&…

AXI 总线协议学习笔记(3)

引言 上篇文章主要介绍了 AMBA以及AXI协议的基本内容&#xff0c;本文接续前文&#xff0c;继续介绍AXI协议的 原子访问、传输行为和事务顺序等。 AXI 总线协议学习笔记&#xff08;2&#xff09;https://blog.csdn.net/qq_43045275/article/details/128824643 原子访问 原子…

【C语言练习】杨氏矩阵、杨辉三角

目录一&#xff1a;杨氏矩阵&#x1f43b;何为杨氏矩阵&#xff1f;&#x1f43b;题目描述&#xff1a;&#x1f43b;思路一&#xff1a;&#x1f43b;思路二&#xff1a;二&#xff1a;杨辉三角&#x1f43b;何为杨辉三角&#xff1f;&#x1f43b;题目描述&#xff1a;&#…