You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DML 1.4中实现设备内banks的遍历?

DML 1.4 遍历设备所有Banks的正确方法

问题背景

在DML 1.2中,可直接通过全局参数banks遍历设备内的所有bank,示例代码如下:

foreach node_bank in (banks) {
    <some logic>
}

但升级到DML 1.4后执行上述代码会报错:

error: undefined value: 'undefined'

尝试手动创建包含所有bank的列表:

param banks_list = [bank1, bank2, bank3]

会触发错误:

error: unknown identifier: 'bank1'

尝试创建存储bank的会话变量:

session bank banks_array = {bank1, bank2, bank3}

同样报错:

error: invalid data initializer: compound initializer not supported for type trait bank

正确解决方案

DML 1.4移除了全局banks变量,需通过设备根节点的类型筛选来遍历所有bank实例,有两种可靠方式:

方式1:遍历根节点子节点并筛选bank类型

foreach node in (root) {
    if node is a bank {
        // 这里编写针对bank的业务逻辑
        <some logic>
    }
}

方式2:使用类型选择器直接匹配所有bank节点

foreach node_bank in (root.*[is a bank]) {
    <some logic>
}

错误原因解析

  1. 手动列表定义失败:bank1这类标识符并非全局可见,DML中必须通过节点层级(如root.bank1)才能访问具体的bank实例,直接写bank1会被视为未定义标识符。
  2. 会话变量初始化失败:DML不支持用复合初始化器为bank类型的数组赋值,且同样存在标识符不可见的问题,因此该方式无法生效。

内容的提问来源于stack exchange,提问作者odenysex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 07:53:12