跳到主要内容

变量

符号

通用图标如下

Variables_image1.png

不同场景下画布对象图标详见数据组件章节

功能

存储各种类型数据

要点

数据格式

变量支持的各种数据格式,以及各种格式具有的方法详见技术说明

简单变量

变量为简单(Value)格式时是动态的,即可能存储如Number、String、Entity等子类型,在模拟过程中可以因为被覆盖而发生类型变化

复杂变量

包括Dict、List

  • 是静态的,一旦初始化,不可被其它不同格式变量覆盖
提示

把变量A赋值给变量BB = A

  • 如果是复杂类型(如List),那么对A的修改操作(如A.pop())也同样会影响B
  • 如果想避免上述情况请使用copy()方法,如"B = A.copy()"
  • 而类似情况下,简单变量则不会因为A的修改(如A += 1) 而影响B
  • List支持任意格式作为列表元素
  • Dict的Key支持非Dict的其它数据格式,Value支持任意数据格式

设置方法

  • 包括类型设置初始赋值
  • 根据变量所处位置,作为全局变量、实体属性、和局部变量时设置方法不尽相同

作为全局变量(通用设置)

Variables_image2.png

类型选择

选择Value/List/Dict/ Set

Value类型初始赋值

输入框,接收返回简单类型表达式,表达式不得使用其它变量

List类型初始赋值

Variables_image3.png

  • 选择输入方式:整体表达式/逐个元素定义表达式

    • 整体表达式赋值

      表达式格式为[element0,element1, ...]

      当然您可以使用range函数进行构造

      Variables_image3+1.png

    • 逐个元素表达式赋值

      Variables_image4.png

      • 新建列表元素:点击按钮出现输入框
      • 定义当前位置的List元素:输入表达式
      • 重复上述两步:直到完成List的所有元素的定义

Dict类型初始赋值

Variables_image5.png

  • 选择输入方式:完整表达式/键值对表达式/批量构造键

    • 完整表达赋值

      输入格式为{key1: value1; key2: value2; ...}

    • 逐个键值对表达式赋值

      Variables_image6.png

      • 新建键值对:点击添加按钮出现一行键值对两个输入框
      • 一个键值对输入:在左边输入框输入键表达式,右边输入框输入值表达式
      • 重复上述两步:直到完成Dict的所有键值对输入
    • 批量键构造模式

      在形式上批量构造Key和默认Valu

      Variables_image7.png

      • 批量构造键

        • 可以使用"构造表达式"批量表达可能出现的键(并未实际构造出),点击公式栏在下拉菜单中会推荐常用写法如上图,用法与容器完全相同
        • 批量构造的效果可以点击预览按钮查看,如下图

        Variables_image8.png

        • 构造后在其它相关位置使用相关Dict对象时,能够根据构造出现公式栏提示,以便于建模,如下图

        Variables_image9.png

      • 设置默认值

        输入表达式,无论任何键,如果未赋值均默认该值

        Variables_image10.png

提示
  • Dict批量构造键机制与容器相同,通常方便用户应对键数量很大且有规律的情况,比如在DeFi领域中你可以使用ProductJoin批量构造所有的ERC20代币和他们两两间的LP代币作为容器的键,如上图,从而支持所有这些代币余额存储。
  • 但这并非意味着系统会在运行时初始化所有的键值对,事实上系统会根据实际情况实例化它们。
  • 与容器不同的是Dict的Value默认值会因为建模中使用了DictA = DictB而被修改。

作为实体属性

Variables_image11.png

  • 当变量被放置在实体内(流程外)画布时是实体属性
  • 数据格式类型设定和初始赋值与全局变量时相同,不再赘述,这里设置指的是所有个体默认值
  • 归属主体选择:个体 / 观察者

Variables_image11+1.png

  • 当变量归属为个体时,支持个性化配置每个个体的变量初始化赋值

Variables_image11+2.png

  • 不做设置时如上图显示“默认”,即所有个体值默认为统一的初始设置值
  • 如需针对个体个性配置初始值,点击上图按钮,在弹窗中的列表中逐一进行如下图

Variables_image11+3.png

  • 在这里设置,与在所属实体的属性面板的个体个性配置弹窗配置,效果完全一致,但后者一定要打开个体配置,并勾选了该变量,这里才能操作,如下图

Variables_image11+4.png

作为流程局部变量

  • 当变量在流程内时称为流程的局部变量
  • 局部变量数据类型设置和初始赋值与全局变量相同,不再赘述

Variables_image12.png

  • 三种类型选择:临时变量/接口/常规变量

临时变量

Variables_image13.png

  • 在本流程开始事件产生Trigger时创建,在Trigger抵达结束事件销毁时销毁,数据存储根据该Trigger寄存(不同Trigger对应不同值)
  • 临时变量的工作机制和模型示例详见数据组件章节

变量接口

Variables_image14.png

  • 当对应端口以参数形式传递数值时,在变量接口所在流程开始事件产生Trigger时创建,在Trigger抵达结束事件销毁时销毁,数据根据该Trigger寄存(不同Trigger对应不同值)
  • 当对应端口以状态链传递对象时,变量接口无寄存、寿命也与所在流程局部Trigger无关
  • 设置流程数据接口后,本流程轮廓外、本流程的调用和请求调用都会出现对应端口,端口符号为"V",供外部传入数据,用法及模型示例详见流程接口的数据传递

常规变量

Variables_image15.png

类似全局变量或实体属性,设置方法相同,永久存在,无寄存机制

案例

模型案例

这是一个GBM价格生成器流程