FennEdge Learn · 编程

DAS Trader Advanced Hotkey Script Course

读懂代码,检查状态,验证结果。 从语言与数据结构,到订单对象、事件工作流和完整项目,系统学习 Advanced Script 编程。

按约 1046 分钟安排,已包含阅读、算例和每课练习;实际用时因人而异。

36节课程≈1046预计分钟—登录后保存进度
09
第 9/36 课 · 约 30 分钟

DAS 脚本集合、数字键与有界遍历

通过 Set/Get/Del 构建集合并汇总,不套用 JavaScript 数组语法。

带索引的对象不是 JavaScript 数组

前置知识:NewUserObj 与 while。官方使用数字键构建类似数组的结构;长度自己维护,明确从零还是从一开始。此例不证明支持方括号、push、map、filter、length。数字键通过 Set/Get 访问,不能写成 .0。

完整的有界汇总

$feSamples = NewUserObj();
$feSamples.Set(0, 8);
$feSamples.Set(1, 12);
$feSamples.Set(2, 10);
$feCount = 3;
$feIndex = 0;
$feSum = 0;
$feMaximum = $feSamples.Get(0);
while ($feIndex < $feCount) {
    $feValue = $feSamples.Get($feIndex);
    $feSum = $feSum + $feValue;
    if ($feValue > $feMaximum) {
        $feMaximum = $feValue;
    }
    $feIndex = $feIndex + 1;
}
$feMean = $feSum / $feCount;
MsgBox($feSum, $feMean, $feMaximum);

循环不变量与空集合

处理索引 k 后,sum 应包含前 k+1 个值,maximum 覆盖同一范围。预期结果为 30、10、12。循环从零开始,在 count 前停止,每次必须推进索引。改为动态数据时,先检查 count>0,再读取首项和除法。全负数集合不能以零初始化最大值,因此用第一个已确认存在的元素。

删除之后必须决定集合结构

Del(1) 只删除键,并没有说明会把键 2 自动前移或减少 count。删除后要么重建连续索引,要么维护有效键列表。Del("*") 不会自动清除外部保存的 count。文档中的 200 次循环上限是平台保护,不应当作设计目标;不能用 while 忙等网络或订单状态。

练习与参考解答

将样本改为 -4、-9、-2,参考结果:最大值 -2,总和 -15,均值 -5。删除索引 1 后,一种正确做法是将剩余两个值重建到键 0、1,并设 count=2,得到总和 -6、均值 -3。直接保留 count=3 会读到缺失键。