计算
图标

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

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

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

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

案例
模型案例
计算应用了系统内置函数