跳到主要内容

如果需要在LabVIEW中使用到字典容器

· 阅读需 4 分钟

(2.3.6) (13.3.5)

编程的时候经常遇到这种情况:需要保存一些数据,这些数据的组织类似一张表格。表格有很多类型相同的条目组成,每个条目由一个标识符(比如ID,名称等),和其它一些数据组成。程序会保存这张表格、对表格中的条目做修改、根据标识符快速找到某的条目。

实现这样的程序功能在C++或C#中非常简单,只要使用他们提供的Map,Dictionary容器就可以了,这些容器已经把维护和查找这张表的功能都实现好了,用户只需使用它们的几个简单接口函数。遗憾的是,LabVIEW中没有提供类似的容器。LabVIEW通常自己定义一个簇的数组来保存表单中的数据,然后再自己编写查询数据的代码。这样做一是编程复杂,而是查询效率太低。

我曾经想过给LabVIEW添加一个这样功能的容器,但是没有得到批准。不过,我最近发现,原来LabVIEW中有三个函数,可以实现类似的功能,虽然它们原本可能并不是用来做这个功能的。这三个函数的本职工作是为变体数据类型设置属性,它们在“Programming->Classter,Class&Variant->Variant”函数选板下,分别是Get Variant Attribute, Set Variant Attribute, Delete Variant Attribute 几个函数。从它们的名字就能知道他们是做什么的了。

变体数据的的属性由一个名字和一个数据组成。每个属性的名字都必须是唯一的,数据可以是任何数据类型的。这样,它恰好适合于前文提到测程序需求。我们可以把表单中的每一个条目看作是一个属性;条目的标识就是属性的名称;条目的其它部分是属性的数据。创建和修改表单使用Set Variant Attribute,Delete Variant Attribute 函数;查询表单的内容使用Get Variant Attribute函数就可以了。

变体的属性在LabVIEW中是以哈希表格式存储的,它的查询效率极高,所以特别适合用于需要大量查询的程序。

它毕竟不是一个真正的容器,还有一些局限性,比如标识只能使用字符串。