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

如何在DML 1.4中遍历寄存器组的未映射寄存器?

在DML 1.4中遍历未映射寄存器并筛选的替代方案

DML 1.4移除了寄存器组的unmapped_registers属性,你需要通过遍历所有寄存器并检查mapped状态来筛选未映射的寄存器,同时结合signal_number条件进行匹配。

方法1:使用foreach循环手动筛选

var target_reg = null;
foreach (reg; $signals.registers) {
    // 筛选未映射且signal_number匹配的寄存器
    if (!reg.mapped && reg.signal_number == signal) {
        target_reg = reg;
        break;
    }
}

if (target_reg) {
    // 原select块中的处理逻辑
} else {
    log "unimplemented", 1: "Power/Board: Signal %d is unimplemented", signal;
    return;
}

方法2:使用find函数简化代码

DML 1.4支持使用find方法对集合进行条件查找,代码更简洁:

var reg = $signals.registers.find(|r| !r.mapped && r.signal_number == signal);
if (reg) {
    // 原select块中的处理逻辑
} else {
    log "unimplemented", 1: "Power/Board: Signal %d is unimplemented", signal;
    return;
}

关键说明

  • 寄存器组的registers属性包含该组下所有寄存器(无论是否映射)
  • 通过reg.mapped判断寄存器是否已映射,!reg.mapped即为未映射寄存器
  • find方法接收一个匿名函数作为筛选条件,返回第一个匹配的元素;如果没有匹配项则返回null

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 08:36:24