Skip to main content

IndirectWrite(间接写入)

节点规格
基本信息
名称 Indirect Write
类别 Indirect (间接)
输入端口 (Inputs)
* Call (调用/脉冲)
Variable IVariable`2 (变量)
Value Dummy/Generic (泛型值)
输出端口 (Outputs)
OnWritten(完成写入时) Continuation (接续)
OnFail(失败时) Continuation (接续)

image.png

间接写入(Indirect writes)通常常见于从其他平台迁移过来的遗留内容中。

间接写入将 Variable(变量)作为输入,该“变量”所包装的类型将决定 Value(泛型)输入端口接受什么类型的值。然后,该节点会将 Value(泛型)写入到 Variable(变量)所包装的字段中。

另请参阅: 关于写入的基本信息 (Basic Writes Info) 以及 如何制作类型变量 (How To Make Type Variables)。
(注:原文此处引用了通用模板,建议查阅 Wiki 对应基础教程)

Indirect Write间接写入 还是 Write直接写入?

Write(写入)节点和 Indirect Write(间接写入)之间的区别在于它们引用受影响变量的方式。

Write 节点中,使用所谓的 Global (全局引用) 来保存变量,该引用仅在 ProtoFlux 开始执行时进行求值。因此,如果代码在执行过程中试图改变这个 Write 节点的目标变量引用,是不会生效的。

相比之下,Indirect Write 节点使用普通的输入端口来接收变量,这意味着每次调用该节点时都会重新求值。这允许在执行流程中通过编程方式更改目标变量,例如通过具有不确定输入数量的 Multiplexer (多路复用器) 来切换写入目标。

简而言之,如果您要写入一个静态变量,请坚持使用普通的 Write;而如果您的代码可能在执行期间改变需要写入的目标变量,请改用 Indirect Write。

输入 (Inputs)

* (Call/调用)

调用此端口以写入值。

Variable (变量 泛型)

要写入的 变量 (Variable)

Value (泛型)

要写入到 Variable 变量 所包装的值中的 数据值

输出 (Outputs)

OnWritten (Continuation/接续)

在 * (Call/调用) 被触发且值已成功写入后发送一个脉冲。

OnFail (Continuation/接续)

在 * (Call/调用) 被触发,但由于缺少目标或变量未包装有效的 IValue`1 导致值无法写入时发送一个脉冲。

示例