> Erlang中文手册 > lookup/2 在 ETS 表里查出相应键的值

ets:lookup/2

在 ETS 表里查出相应键的值

用法:

lookup(Tab, Key) -> [Object]

返回表 Tab 里键为 Key 的所有对象数据的列表。

在类型是 set、bag、duplicate_bag 表里,只有跟键 Key 相匹配的对象数据才会返回。如果是 ordered_set 类型的表的话,就只有跟键相等的情况下才会返回。这两者的区别就像 =:= 跟 == 一样。例如,把整数 1 作为对象数据的键插入到类型是 ordered_set 的表里,然后用浮点数 1.0 作为键调用 ets:lookup/2 来查找该对象对象。

如果是 set 或 ordered_set 类型的表,那么该函数会返回一个空列表或者一个元素的列表,因为这些类型的表里不可能存在多个相同键的对象数据。如果是 bag 或 duplicate_bag 类型的表,那么该函数则返回任意长度的列表。

数据插入的顺序是有保存的,第一笔插入的数据,返回的时候也是排在第一位。

在类型是 set、bag、duplicate_bag 表里,插入和查找的时间是恒定的,跟表的大小无关。对于 ordered_set 类型的表,插入和查找的时间跟表的大小成正比。

ets:new(test_ets_new, [set, named_table]),
ets:insert(test_ets_new, [{a, 1}, {b, 2}]),
ets:lookup(test_ets_new, a).
TabId = ets:new(test_ets_new, [duplicate_bag, named_table]),
ets:insert(TabId, [{a, 1}, {b, 2}, {a, 3}]),
ets:lookup(TabId, a).