Skip to content

使用变量

之前的章节有提到类型与对象的关系,类型是对象的模板,对象是类型的实例,即对于类型Point3来说:

  • 这个类型包含三个字段 X,Y,Z,每个字段都是浮点数,这是抽象的,说明类型的模板是什么样的。
  • 空间中有一个点,坐标是 X=1,Y=2,Z=3,这个点是一个具体的,字段填充上了具体的值,这个点就是实例,是类型Point3的一个对象。

我们在流程图里的连线传递的都是实例,而构造实例的方法通常都会放到具体类型的Constructors分组,或者以 Create 开头, Constructors分组的功能模块称作构造函数,这系列的模块右上角会有星号,这意味着创建对象时会分配内存空间,而构造函数负责对这块空间进行初始化, 类比来说,就是先由系统 "圈出一块地"(分配内存),然后构造函数负责 "装修"(初始化),让这块地变成可用的 "房子"(对象)。

TIP

走数据流的构造函数,每次执行都会产生新的实例,这个特性通常会带来问题。

然而,在实践中,不会一味的“只”构造对象,我们还需要管理构造的对象,在 E3 中,我们把管理对象实例的功能叫做容器,aka---变量

创建变量容器

在 Libray 的 Create 分组,有是CreateItemCreateListCreateDict。 输入端都是一个类型选择器,可用选择当前工作区所有可用的类型,都是走流程的,这意味着,它出现的位置很重要。

alt text

这三兄弟输入端都有一个类型选择器,必须先设置容器的数据类型,否则无法正常承载数据,类型选择下方是初始值,三者的情况各不相同:

  • Item 初始值可用为空,意味着使用默认值
  • List 加号可以给多个指定类型的值(有序),也可以不给,那就是空集合
  • Dict 加号可以指定多个键值对,也可以不给,那就是空字典

TIP

双击VarA,为变量改名,方便区别于其他变量

调用变量

在 Library 的 Variables 分组中,会显示当前 NCF 中所有可用的变量:

alt text

注意,每个变量都有 GET/SET 成对存在,这对应了变量的两个重要概念,读取和设置

  • GET 获取变量当前值,走数据流,由流程决定它的值是什么,注意:GET 之前需要搞清楚在不在可用范围
  • SET 设置变量当前值,走流程,用于在某一个流程中修改目标变量的值

实例推导

alt text

根据上图可用推导执行过程:

  1. 流程一开始,先创建了一个 Item 变量,名为 VarA,初始值为0

  2. 然后马上通过 Print 模块查看 VarA 的值,这时候,值并没有改变,依然是初始值

  3. 紧接着进入一个 For Loop:

    3.1. 在 Loop 中把 i 值 SET 到 Var A

    3.2. 进入 Print 模块,通过 GET VarA 获取到 VarA 最新的值,即上一步 SET 的 i,依次输出0,1,2,3,4,5,6,7,8,9

  4. Loop Done 之后,再次查看 VarA 的值,这时候,VarA 的值是 Loop 最后一次 SET 的值,即9

TIP

注意到,上述过程两种 GET 变量的方式,一种是,直接从 CreateItem 功能输出端取,另一种通过 GET VarA 取,这两种是完全等效的。

实用功能

  1. 通过 GET 取方便在流程复杂的时候省掉长长的连线,双击 GET 可用跳转到关联变量是在哪儿 Create 的
  2. 在 CreateItem 上右键菜单点击 Show References 可以查看这个变量在什么地方 GET/SET 了。
  3. 复制 GET/SET 的时候,最好选中相应的 Create... 一起复制,这样在粘贴的时候,可以保持他们的内部联系。