DAS 脚本动态变量:GetVar、SetVar 与 DelVar
理解 GetVar、SetVar、DelVar,并设计变量归属和重置规则。
为什么按名称访问变量
前置知识:全局变量作用域。固定配置优先用直接赋值;当模块需要按名称选择配置时,才引入间接访问。GetVar 以字符串名称读取全局变量,SetVar 写入,DelVar 删除。它们不会自动提供局部作用域、跨重启保存或账户隔离。
接口契约与名称
手册列出 GetVar(varname)、SetVar(varname,value)、DelVar(Varname1, Varname2,…);没有通过示例规定字符串内是否接受 $ 前缀。采用一套命名约定后,用写入—读取和变量窗口检查确认。不要对已有业务状态同时尝试两种写法。本例用字符串内不带 $ 的独立练习名称,目的就是验证这一约定。
写入、读取并清理自己的值
$feRegistryName = "FE_Practice_ConfigRevision";
SetVar($feRegistryName, 3);
$feRegistryValue = GetVar($feRegistryName);
MsgBox("Revision: ", $feRegistryValue);
DelVar($feRegistryName);
变量归属也是数据结构的一部分
预期往返值为 3。最后一行删除的是动态寻址的变量,不是保存名称的 $feRegistryName,也不是读取结果。删除后再读会返回什么仍需确认。给共享变量记录所有者、类型、初始化入口、使用者与重置事件。全局名称不区分大小写,FE_State 和 fe_state 不能当成两份状态;多股票数据通常更适合集合对象。
重置、删除、持久化是三件事
重置把状态设为明确值,例如 ready=0;删除移除名称;两者都不是持久化写入。初始化热键应建立后续模块需要的全部状态。停止时先停用回调,再清理依赖,避免 Timer 仍在读取被删除的变量。DelVar 文档记录的是名称参数,不应擅自添加按命名空间通配删除。
练习与参考解答
两个辅助脚本都写 ready,如何修复?参考解答:为每个模块分配独立前缀,指定初始化入口,成功后再发布输出。有意共享的配置则集中到一个写入者。测试先停回调、重置、重新初始化,再恢复运行的全过程。