gpt4 book ai didi

erlang - 为什么 Erlang 字符串不能用作 ets 表名?

转载 作者:行者123 更新时间:2023-12-02 20:27:01 24 4
gpt4 key购买 nike

我是动态创建ets表的,所以最好避免atom作为名字。
简单的使用字符串作为名字,如:
:ets.new("aaa", [:named_table])

但是无法编译:

** (ArgumentError) argument error
(stdlib) :ets.new("aaa", [])

最佳答案

如果您要动态创建 ETS 表,一种方法是将它们创建为未命名的表,并使用 :ets.new 返回的表 ID 来访问它们:

iex(1)> table1 = :ets.new(:foo, [])
8212
iex(2)> table2 = :ets.new(:foo, [])
12309
iex(3)> :ets.insert(table1, {:a, 1})
true
iex(4)> :ets.insert(table2, {:a, 2})
true
iex(5)> :ets.lookup(table1, :a)
[a: 1]
iex(6)> :ets.lookup(table2, :a)
[a: 2]

(在 Erlang/OTP 20.0 中,表 ID 是一个引用而不是一个整数,但它的工作方式相同;参见 this question。)

关于erlang - 为什么 Erlang 字符串不能用作 ets 表名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49653209/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com