根据手册,ETS表有4种类型:
set
-表格是集合表格:一个键,一个对象,对象之间没有顺序。2这是默认的表类型。ordered_set
-表格是ordered_set表格:一个键,一个对象,按Erlang术语顺序排序,即运算符所隐含的顺序。这种类型的表在某些情况下与其他类型的表的行为有些不同。最值得注意的是,ordered_set表认为键在比较时相等,而不仅仅是在它们匹配时相等。这意味着对于ordered_set表< and >,integer()1和float()1.0被视为相等。这也意味着,如果在表的键中混合了float()和integer(),则用于查找元素的键不一定与返回元素中的键匹配。bag
-该表是一个包表,它可以有许多对象,但每个键只能有每个对象的一个示例。duplicate_bag
-该表是duplicate_bag表,它可以有许多对象,包括每个键的同一对象的多个副本。
虽然从他们的描述中我并不真正理解他们之间的区别。这里的“对象”和“对象的示例”是什么?
1条答案
按热度按时间y53ybaqx1#
第一个月
这是一个常规Map,其中每个键都是唯一的,并且引用一个元组。每次对单个键的后续写入都将覆盖该键下的现有条目。
ordered_set
的名字就像
set
一样,但是保留了标准比较运算符的元素顺序,并通过==
运算符解决相等性问题。因此,键1
和1.0
被视为等效的。bag
型它是元组的唯一集合。只要条目在值的某个地方不同,它们就可以共享键。
duplicate_bag
型与
bag
相同,但不是唯一的。元组可以重复,这意味着以后每次添加相同的元素都会向表中添加新条目