类型转换
数据在流动的过程中,难免会发生各种各样的转换,在快速上手中,当要显示的数据传递给 Display 模块的时候,因为 Display 模块能兼容各种类型数据的显示,所以它的objects参数数据类型是any,这意味着,任何数据类型都可以给到any,故Point3 => any是一个有效的转换,这种转换称作自动转换,数据在连线过程中,E3 会自动检测两头数据是否兼容,若不兼容会检查两头数据类型能否自动转换,如果可以的话,那就自动带上转换模块。

TIP
利用鼠标悬停数据端口即可查看此端口的数据是什么类型的,还能看到相关说明。 另外,注意到,E3 的任意一条数据连线两头的数据类型是必然匹配的,即,数据流连线两头的数据类型一定是相同的
自动转换
自动转换模块通常都是自动创建的,其实当初在设计这个模块的时候纠结过要不要加这个,因为不加这个模块同样也能成立,但后来还是决定加上,比起隐式的数据流转换来说,显式转换能够让数据流的流动变得清晰可见。
有些时候自动转换会有损失,比如,整数int和浮点数float,相互之间都是有效的转换,但是当我们把一个float转换成int,会直接去掉小数点后的值,只取整数部分,再转会float就不是原来的值了,小数部分是 0
另外还需注意,有时候无论怎么转换,其中传递的数据都是同一个,但有时候却不是,详见值与引用
强制转换
强制转换通常用在当你知道这条数据流传递的是某种类型的值,但实际不是的情况使用,或者说,你设计的某个功能需要兼容多种类型的时候。 在Cast分组有这三个功能模块,他们仨输入端 data 都是item的any,type输入端是一个选择框,可以选择当前工作区所有可用类型。 注意到他们仨的输出端的数据容器分别与他们的功能对应,这就意味着,输入一个不定类型的数据流,你需要事先知道你要 Cast 到的容器种类,选择正确的 Cast。

多数情况我们是不需要做强制转换的,强制转换一般出现在比较动态的场景,结合实际场景来说:
- 先把某个 List CastTo any,然后创建一个
List<any>,这样可以简单的实现多维 List,套多少维都行,但不推荐这么做,为什么呢? 因为,后续使用的时候从 List 中拿出来的就是 any 了,但是你很清楚,当时放进表里的时候是 List CastTo 的 any,所以本质上它还是 List 可以通过强制转换,把这个 item 的 any 转换成 List,就可以 List 用,套得越深,取的时候越难,参照下方实例。实际上,这么做完之后,是不合适的,临时用一下还行,当项目做大了之后,就很难受了,因为这是个 any,我们可以把任何东西都塞进去,这意味着,从 any 到 List 的强制转换会出错,这就得不偿失了, 关于多维列表常规用法参照多维列表。

- 本身就是很灵活的场景比方
JsonNode详见JSON 专题