如何更新存储在 ets 表中的元组中的数字?

Posted

技术标签:

【中文标题】如何更新存储在 ets 表中的元组中的数字?【英文标题】:How to update a number inside a tuple stored in an ets table? 【发布时间】:2018-06-09 21:23:38 【问题描述】:

假设我有一个像这样的 ets 表:

I = ets:new(mytable, [named_table, set]).
ets:insert(I, 10,10, 4 ,"description").

我想使用ets:update_counter 更新元素4

我尝试了不同的方法,但找不到解决方案,例如:

ets:update_counter(I, 10 , 3,1).

** exception error: bad argument
     in function  ets:update_counter/3
        called as ets:update_counter(mytable,10,3,1)

我希望得到如下结果:

10,10, 5 ,"description"

【问题讨论】:

【参考方案1】:

我建议只对键和值使用一个元组,而不是对另一个元组中的值使用一个元组:

1> I = ets:new(mytable, [named_table, set]).
mytable
2> ets:insert(I, 10, 10, 4 ,"description").
true
3> ets:update_counter(I, 10 , 3,1).        
5
4> ets:lookup(I, 10).
[10,10,5,"description"]

【讨论】:

我知道,我正在寻找如何解决我的问题。谢谢顺便说一句 @J.R.如果您真的需要使用update_counter,您将需要展平您的元组,即值部分不能是元组。 update_counter 不支持。假设值元组中的键和第一个位置始终相同,您可以添加包装函数以插入/读取 ets 表。插入只会插入值部分,而读取可以创建您今天拥有的嵌套元组。

以上是关于如何更新存储在 ets 表中的元组中的数字?的主要内容,如果未能解决你的问题,请参考以下文章

Python中的元组(Tuple)

元组中的元素到 Bag Pig 中的元组

为啥我的元组中的第一个值总是未知的?

对本身位于元组中的元组(可迭代的可迭代)求和的最有效方法是啥?

通过索引获取元组中的元组值

我的元组中的那些小“u”是啥? (python 2.7)[重复]