当前位置 : 首页 » 互动问答 » 正文

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

分类 : 互动问答 | 发布时间 : 2018-04-27 15:05:50 | 评论 : 1 | 浏览 : 30 | 喜欢 : 0

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

但它不能被编译:

 **(ArgumentError)参数错误
    (stdlib):ets.new(“aaa”,[])

回答(1)

  • 1楼
  • 如果要动态创建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})
    真正
    iex(4)>:ets.insert(table2,{:a,2})
    真正
    iex(5)>:ets.lookup(table1,:a)
    [a:1]
    iex(6)>:ets.lookup(table2,:a)
    [a2]
    

    (在Erlang / OTP 20.0中,表id是一个引用而不是一个整数,但它的工作方式相同;请参阅这个问题.)

相关阅读:

与Project Euler进行速度比较:C vs Python vs Erlang vs Haskell

Erlang在哪里使用,为什么?

学习Erlang的最佳方法是什么?

在Win环境下安装Erlang

开发基于TCP的RPC服务

erlang 你不知道的事

Erlang四个BIF来操纵注册进程的名字

mysql 在线参考手册

Rebar:Erlang构建工具

erlang 监控树