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

如何在RTI DDS内容过滤主题中过滤嵌套联合的b.x>10?

问题描述

我定义了如下数据类型:

enum T1 {
    A,
    B
};

enum T2 {
    C,
    D
};

union T3 switch(T1) {
case A:  
    uint8 x;
case B:
    uint8 y;
};

union T4 switch(T2) {
case C:
    uint8 a;
case D:
    T3 b;
};

现使用T4作为数据类型,请问是否存在方法在RTI DDS内容过滤主题中实现b.x>10的过滤?

解决方案

可以实现该过滤逻辑,但必须结合联合的判别式(switch字段)做前置条件判断,确保仅在对应联合分支激活时访问目标成员,避免无效访问导致的逻辑错误。

具体过滤表达式需要三层条件组合:

  1. 确认T4的判别式为D(仅该分支下存在b成员);
  2. 确认T3的判别式为A(仅该分支下T3存在x成员);
  3. 最后判断b.x > 10。

对应的过滤表达式如下:

T4.switch = D AND T4.b.switch = A AND T4.b.x > 10

关键说明

  • RTI DDS内容过滤主题支持访问嵌套联合的成员,但必须先通过判别式确认当前激活的分支,否则联合处于其他分支时,访问未激活成员会引发未定义行为,过滤结果不可靠。
  • 上述表达式中的switch是联合默认的判别式字段名,若你在IDL中为判别式指定了自定义名称,需替换为对应名称。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 13:33:08