图形属性

MCG 数据处理方式的一些方面值得注意。

不可变的数据

流过图形的大多数数据不能更改。换句话说,数据不可变。某些操作可能会建议他们更改数据,如“阵列”“附加”操作符,但从图形的角度来看,将会出现节点输出新对象副本的情况。

在某些情况下,编译器可能执行优化,以避免在不必要时创建数据副本,只要保持参考透明度属性即可。

参考透明度

MCG 中的许多操作符是参考透明的。也就是说,对于相同的输入,它们始终会产生相同的输出,没有其他明显的影响。

函数作为数据

MCG 的一个有趣(且有用)方面是,它是功能齐全的可视化编程语言。这意味着节点可以接收函数作为输入,并返回函数作为输出。可以使用设计和绑定等操作符动态创建函数,甚至可以将其存储在阵列中。

通过将某个节点的函数输出端口连接到接受函数作为输入类型的节点,可以将任何子图形视为一个函数。将某个节点作为函数进行连接时,其图形中所有节点的未连接连接器会构成函数参数。

不确定性计算顺序

MCG 不保证操作符输入将以特定顺序计算,使用 If 操作符或 Sequence 操作符等控制流操作符的情况除外。在某些情况下,编译器可以对输入进行预先计算和缓存,或者并行计算两个输入。