ETS表创建错误

时间:2016-08-10 11:09:09

标签: elixir

我在尝试基于记录创建和ETS表时遇到了问题。代码取自书籍Introducing Elixir

以下是记录:

defmodule Planemo do
    require Record
    Record.defrecord :planemo, [name: nil, gravity: 0, diameter: 0, distance_from_sun: 0]
end

现在,如果按照以下方式创建表,则成功:

planemo_table = :ets.new(:planemos,[:named_table, {:keypos, Planemo.planemo(:name) + 1}])

在另一个示例中,作者使用以下语法(__record__)并且失败:

planemo_table = :ets.new(:planemos,[:named_table, {:keypos, Planemo.__record__(:index, :name) + 1}])

错误:

** (UndefinedFunctionError) function Planemo.__record__/2 is undefined or private
    Planemo.__record__(:index, :name)
    planemo_storage.ex:6: PlanemoStorage.setup/0

我首先想到可能在Elixir 1.3.2中不推荐使用__record__,但我无法找到它的任何痕迹。请帮忙。

1 个答案:

答案 0 :(得分:1)

这本书似乎很老了。包括__record__在内的许多记录功能均为removed on 24 May 2014,并且更改属于Elixir 0.14 which was released on 17 June 2014