计算
图标

功能
用于流程中的独立计算动作
要点

-
新建公式
点击新建公式按钮,会增加一行公式输入栏,在其中输入公式即可
-
运行机制
系统按从上至下的顺序进行计算
-
支持调整计算顺序
鼠标悬停某行公式栏时左侧会出现拖动符号,拖动其上下移动即可
输入栏通用方法
公式语法
-
基本
公式栏需要输入等式,表示将等号右边的表达式计算值赋予等号左边的数据对象,如果不是等式结构公式栏会出现警告,如下图所示

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

- 最上方的示例是在当前位置最常用的输入内容推荐
- 支持输入自动联想补全
- 任何时候点击公式栏进入输入状态时,会展开下拉提示列表如下图,其中列出了所有可能使用到的内容推荐,按分类呈现并有简短说明,点击选择后会将内容自动补全到当前输入栏
表达式语法
提示
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]"
相关细节请参考技术说明
对象名称的识别优先级
对公式中出现的任意对象名称,系统将按以下优先顺序识别,同级时将按随机顺序识别:
- 本组件公式栏的关键字:如请求组件或统计组件的默认关键字
Entity、有输出数据的组件的关键字This等 - 本流程内:随机识别前序流程元素和数据元素
- 本流程外:逐级向上层的父级流程
- 流程外实体内:先实体个体属性,后观察者属性
- 所在实体外:全局数据对象
提示
模型中的流程元素名称和不同层级的数据元素名称可能重名,而系统按以上优先级识别。
- 这意味着在一定位置的公式中使用某个名称时,其它重名的对象是被屏蔽覆盖而无法访问的。
- 重名时系统会有警告提示。
- 重名并不会直接导致模型无法运行,所以建议命名表达式可能出现的任何对象时,尽可能避免重名。
了解以上关于系统识别公式中对象名称的优先顺序,可能有助于解决对象重名时的困惑。
例子
下图中计算组件的公式为:v = a.b,根据以上识别优先级,公式栏将随机识别a是流程前序的请求组件(红色),或同名的流程局部变量(黄色),而不是同名全局变量(绿色),控制中心也显示了重名警告。
因此,为避免运行结果产生不必要困惑,请尽可能避免重名。

案例
模型案例
计算应用了全局函数