跳到主要内容

计算

图标

Compute_image1.png

功能

用于流程中的独立计算动作

要点

Compute_image2.png

  • 新建公式

    点击新建公式按钮,会增加一行公式输入栏,在其中输入公式即可

  • 运行机制

    系统按从上至下的顺序进行计算

  • 支持调整计算顺序

    鼠标悬停某行公式栏时左侧会出现拖动符号,拖动其上下移动即可

输入栏通用方法

公式语法

  • 基本

    公式栏需要输入等式,表示将等号右边的表达式计算值赋予等号左边的数据对象,如果不是等式结构公式栏会出现警告,如下图所示

    Compute_image3.png

提示:公式与表达式
  • 公式指对数据对象赋值,是等式形式,如:"B = 2*A"
  • 表达式可以理解为仅仅公式等号右侧的部分,用于特定取值,如局部变量B可以在初始赋值栏中表达为全局变量A的2倍:"2 * A"
  • 智能提示

    • 任何时候点击公式栏进入输入状态时,会展开下拉提示列表如下图,其中列出了所有可能使用到的内容推荐,按分类呈现并有简短说明,点击选择后会将内容自动补全到当前输入栏

      Compute_image4.png

    • 最上方的示例是在当前位置最常用的输入内容推荐

    • 支持输入自动联想补全

表达式语法

提示

HoloMind 的表达式更贴近Python的使用习惯,如List[2], List.pop(), Dict[key], PI**2, ...

  • 表达式可以使用的内容

    数据元素及其方法关键字实体内置属性实体对象内置方法全局函数和操作符、各种数据格式的值等

  • 点语法

    点语法"object.xxx"的写法可用于以下情况:

    • 访问实体对象(个体或观察者)的属性时,"entity_single_object.property_name"
    • 访问实体对象(个体或观察者)的方法时,"entity_single_object.method"
    • 访问数据对象的方法时,"data_object.method"
    • 访问String格式键的Dict对应值时,"Dict_object.Key"
    • 访问流程前序组件的输出数据时,"component_name.output_key"
    • 动作后访问本组件输出数据时,"This.output_key"
    • 访问前序流程调用对象的变量端口数据时,"call_object.port_name"
    提示

    在表达式或公式中访问内置属性或内置方法时:

  • 索引语法

    索引语法 "object[xxx]"的写法可用于以下情况:

    • Dict数据的访问,"Dict_object[Key]"
    • List数据的访问,"List_object[Index_Nubmer]"
    • 实体个体的访问,"entity[ID]"
  • 相关细节请参考技术说明

对象名称的识别优先级

对公式中出现的任意对象名称,系统将按以下优先顺序识别,同级时将按随机顺序识别:

  1. 本组件公式栏的关键字:如请求组件或统计组件的默认关键字Entity有输出数据的组件的关键字This
  2. 本流程内:随机识别前序流程元素和数据元素
  3. 本流程外:逐级向上层的父级流程
  4. 流程外实体内:先实体个体属性,后观察者属性
  5. 所在实体外:全局数据对象
提示

模型中的流程名称和不同层级的数据对象名称可能重名,而系统按以上优先级识别

  • 这意味着在一定位置的公式中使用某个名称时,其它重名的对象是被屏蔽覆盖而无法访问的。
  • 重名时系统会有警告提示
  • 重名并不会直接导致模型无法运行,所以建议命名表达式可能出现的任何对象时,尽可能避免重名。

了解以上关于系统识别公式中对象名称的优先顺序,可能有助于解决对象重名时的困惑。

例子

下图中计算组件的公式为:v = a.b,根据以上识别优先级,公式栏将随机识别a是流程前序的请求组件(红色),或同名的流程局部变量(黄色),而不是同名全局变量(绿色),控制中心也显示了重名警告。

因此,为避免运行结果产生不必要困惑,请尽可能避免重名。

Compute_image5.png

案例

模型案例

计算应用了系统内置函数