If/Else节点
概述
If/Else节点是一个控制流节点,允许您根据条件在两个不同的值之间进行选择。它接收三个输入:一个条件、一个真值和一个假值。如果条件为真,则真值通过输出端口传递。如果条件不为真,则假值通过输出端口传递。
该节点可以"消耗"一个Not Ran
值来从该点继续执行图。这意味着如果将Not Ran
值传入If
端口,则会改为传递False
值。如果False
值未被连接,则结果将再次变为Not Ran
。
If/Else节点特别适用于始终确保图形返回值,并且图形的输出始终运行,或者确保图形中的后续节点始终接收到值,即使中间节点未运行。
- 输入
- 输出
- 编辑器设置
输入项
标题 | 数据类型 | 描述 | 默认值 | 备注 |
---|---|---|---|---|
If | any | The condition to evaluate. If truthy, the true value is passed through. | (required) | The input will be coerced into a boolean if it is not a boolean. |
True | any | The value to pass through if the condition is truthy. | (empty) | The input will be coerced into the same data type as the False input if it is not the same type. |
False | any | The value to pass through if the condition is not truthy or is not provided. | (empty) | The input will be coerced into the same data type as the True input if it is not the same type. |
输出
标题 | 数据类型 | 描述 | 备注 |
---|---|---|---|
Output | any | The value that was passed through based on the condition. Either the true value or false value. |
编辑器设置
该节点没有可配置的编辑器设置。
示例1:根据条件在两个值之间进行选择
- 创建一个Bool Node。将Bool Node的值设置为
true
。 - 创建两个文本节点。将一个节点的文本设置为
Hello
,另一个设置为World
。 - 创建一个If/Else节点。将Bool节点连接到If/Else节点的
If
输入。将包含文本Hello
的Text节点连接到If/Else节点的True
输入。将包含文本World
的Text节点连接到If/Else节点的False
输入。 - 运行图表。If/Else节点的输出应为
Hello
。 - 尝试将Bool节点的值更改为
false
。再次运行图表。现在If/Else节点的输出应该是World
。
示例2:为缺失的输入提供默认值
- 创建一个If Node但不要将任何内容连接到其
If
输入。 - 创建两个文本节点。将一个节点的文本设置为
Hello
,另一个设置为World
。 - 将Hello Text节点连接到If节点的
Value
输入。 - 创建一个If/Else节点。将If节点连接到If/Else节点的
If
和True
输入。将包含文本World
的文本节点连接到If/Else节点的False
输入。 - 运行图形。If/Else节点的输出应为
World
。
错误处理
在正常情况下,If/Else节点不会抛出错误。
常见问题
问:Rivet中什么被视为真值?
A: 在JavaScript中被视为真值的任何值,以及任何非空数组,在Rivet中都被视为真值。这包括:
true
- 任何非零数字
- 任何非空字符串
- 任何非空数组
- 任意对象
- 任何函数
所有其他值都被视为假值,包括字符串值 "false"
。
问:如果If
输入为Not Ran
会发生什么?
A: 如果If
输入是Not Ran
,则会传递False
值。如果False
值未连接,则结果将再次为Not Ran
。
问:如果没有提供True
或False
输入会发生什么?
A: 如果未提供True
或False
输入,它们将默认为Not Ran
。
问:我能否使用If/Else节点在两种不同类型的值之间进行选择?
答:是的,您可以使用If/Else节点在两种不同类型的值之间进行选择。例如,您可以根据条件在字符串和数字之间进行选择。但请注意,If/Else节点的输出类型将与传入值的类型保持一致。