两种模块

  1. 使用命令库, 发布后, 在任何一个项目中使用
  2. 在项目中建一个任务, 直接通过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()公有函数去模拟公有变量. 也没有私有函数. 私有函数可以通过编码规则去模拟, 如前面加下划线_, 外部函数则不要去调用.

标签: none 阅读量: 606

添加新评论