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

参考: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 }  // 定义字典型变量days

For Each i,j In days            // 每次循环,变量i, j分别为days中每个名字和值
    If j Mod 2 = 0              // 如果j是偶数
           Continue             // 结束本次循环,开始下一次循环
    End If
    TracePrint(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”三个字段,分别代表发生异常的文件名、发生异常的行号、异常包含的信息。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阡之尘埃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值