最近在学习Quick Drop插件的Move Label底层代码时,看到了如下代码片段。该代码片段通过不断地试错向下转换类型,以确认某个GObject类具体是哪个子类;这个插件里,试错的范围仅限可能有Label的GObject子类

对于这个代码,第一直觉是感同身受地太粗暴了,因为同样的遍历、穷举的事情,曾经我也因为仓促间脑宕机而干过,见下图

但是,当我无意间(其实是在问AI过程关于Label的问题时,但找不到具体是哪里问的了)看到下面的VI后,我又重新对这种做法的合理性有了认知改变,因为他是LabVIEW原始编辑器中自带的--Get GObject Label.vi

查看该VI,有两个收获
一、完整的支持Label.Text属性的VI Server类列表
在该VI的程序框图上,详细列出了哪些VI Server类支持Label.Text属性

对应着VI Server类图,我们可以一一找到这些类

父类与子类
在该类族图上,如果是某个父类具有Label.Text属性的话,子类都会具有这个属性
二、存在即合理
LabVIEW中节点的错误输出是一个用处很多地工具,我们需要处理好错误处理方式,此处结合了Case分支,能够实现类似Try-Catch的功能
