变量
DOpus 中的脚本都是一次性的, 脚本的全局变量并不会被保持,每次调用时脚本都会被重新初始化。如果想要在两次调用之间保持值,就需要使用 DOpus 提供的变量(Var)。
作用域
DOpus 的变量有以下几种作用域:
持久存储的变量可以在重启 DOpus 后恢复原来的值,但只支持以下几个类型:
bool
和int
string
date
currency
Vector
(只能使用以上类型的元素)
变量操作
检测变量是否存在:
Vars.Exists("name")
获取变量:
Vars.Get("name")
设置变量:
Vars.Set("name", "value")
删除变量:
Vars.Delete("name")
值类型
尽管 DOpus 的文档中说变量可以存储任意类型的值,但至少在 JScript 中实际情况并非如此,既不支持数组也不支持对象:
var test1 = [1, 2, 3];
var test2 = { a: 1 };
DOpus.vars.Set("test1", test1);
DOpus.vars.Set("test2", test2);
// 'DOpus.vars.Get(...).0' 为 null 或不是对象 (0x800a138f)
DOpus.Output(DOpus.vars.Get("test1")[0]);
// 'DOpus.vars.Get(...).a' 为 null 或不是对象 (0x800a138f)
DOpus.Output(DOpus.vars.Get("test2").a);
如果你必须要使用复杂类型,可以使用 JSON.stringify()
将值序列化后保存到变量,再使用 JSON.parse()
来反序列化,得到原值。
变量枚举
JScript:
DOpus.Output(DOpus.vars.count);
for (var e = new Enumerator(DOpus.vars); !e.atEnd(); e.moveNext()) {
DOpus.Output(e.item().name + ": " + e.item().value);
}
vars 是 Collection,不能通过下标访问元素(尽管文档中错误地说可以这样做);也不能使用 forEach。
VBScript:
For Each Var in DOpus.Vars
DOpus.Output(Var & ": " & Var.value)
Next
你可以通过 Global Variable Management Dialog 来查看和管理全局变量:

最后更新于