Uibot模块的用法
两种模块
- 使用命令库, 发布后, 在任何一个项目中使用
- 在项目中建一个任务, 直接通过
import 任务名
导入模块
我觉得项目少的时候用第二个就好了. 因为第一种命令库的方式似乎总是出错, 并且每次更新很麻烦: 关闭当前项目, 进入命令库项目, 改完代码再发布, 在进入原项目使用. 而方式1直接修改对应任务就完事了, 立即生效.使用
官方对于模块描述比较简单, 主要讲了对模块内的函数使用和模块全局代码的使用.
以下以建立一个叫tools
的模块举例, 在main
的任务中调用tools
导入模块
import tools
函数调用
比如其中有一个add(a,b)函数, main中调用方式为
Dim result = tools.add(1,2)
全局代码调用
main中全局代码调用方式:
tools()
官方没讲的, 全局变量和全局代码的返回值
如果在tools模块中定义了一个全局变量Dim g = 1
, 这个全局变量会有如下特点:
在main引入了tools并运行了全局代码tools()
后, 可以被tools中其他的函数使用, 但不能被main直接调用, 如:
// tools.task
Dim g = 1
Function getG()
return g
End Function
// main.task 正确调用方式
import tools
tools()
log.Info(tools.getG()) // 输出1
// main.task 错误调用方式1
import tools
log.Info(tools.getG()) // 输出错误: 名字 g 没有找到. 需要先运行全局代码,才能初始化g
// main.task 错误调用方式2
import tools
tools()
log.Info(tools.g) // 输出错误: 名字 g 没有找到. g已经被初始化但是只能被tools中的函数访问, 类似私有变量
全局代码也可以有返回值, 如
// tools.task
return 10
// main.task
Log.Info(tools()) //打印10
将一个模块当成一个对象来使用
上面的用法暗示了这个tools.task模块可以作为一个对象使用. 其中的全局变量是模块的私有变量, 全局代码是模块的初始化(构造)函数, 模块的函数全部是公有函数. 这个对象不存在公有变量, 需要用类似set/get()
公有函数去模拟公有变量. 也没有私有函数. 私有函数可以通过编码规则去模拟, 如前面加下划线_
, 外部函数则不要去调用.