可枚举集合库
Last updated
Last updated
可枚举集合库是OpenZeplin项目组定义的以MIT开源协议共享的公共库合约,由集合对象及一系列方法构成,可用于存储Bytes32、Address、Uint三种数据类型的无重复枚举元素集合。它既可以根据元素的值来判断是否被集合所包含,也可以快速的查询获取集合元素的总数量、所有元素的列表,并且可以按元素编号查询获取元素的值。
可枚举集合库主要的成员包括可枚举集合对象及以之为内核包裹衍生的Bytes32集合对象、Address集合对象和Uint集合对象。
可枚举集合对象由一个不定长bytes32类型数组和一个“元素值->索引号”的映射表构成。这种结构既可以通过数组快速获取集合的元素总个数、所有元素列表,又可以根据元素值从映射表中快速查询到对应的数组元素序号(索引号-1),进而可以判断元素是否已被集合所包含(索引号>0),而且在删除元素时也可快速定位并删除特定的数组元素。
_values
不定长bytes32类型数组。
_indexes
"元素值->索引号"映射表。
查询接口最能体现可枚举集合库在整个系统中的功能和用途,具体请见下表。
contains
按元素值查询其是否被集合所包含。
length
获取集合的元素个数。
at
按数组编号获取元素值。
values
获取集合中所有元素列表。