在Erlang shell erl
中,我可以使用rr(Mod)
从指定的模块加载记录定义。这使我可以在查看外壳程序中的记录时看到字段名称。
Elixir shell rr(Mod)
中的iex
等效于什么?
例如,我有一个'RSAPrivateKey'
Erlang记录,但是当显示在iex
中时,我看到的是:
{:RSAPrivateKey,
<<48, 130, 4, 164, 2, 1, 0, 2, 130, 1, 1, 0, 181, 223, 0, 179, 206, 108, 57,
72, 227, 146, 53, 117, 218, 232, 204, 33, 153, 161, 201, 232, 23, 145, 201,
134, 105, 53, 164, 223, 95, 111, 64, 29, 254, 114, 146, 33, ...>>,
:not_encrypted}
答案 0 :(得分:0)
您可以使用record_name(a_record)
获取字段名称:
iex(1)> c "user_record.ex"
[User]
iex(2)> import User
User
iex(3)> user1 = user()
{:user, "Meg", "25"}
iex(4)> user(user1)
[name: "Meg", age: "25"]
iex(5)> user2 = user(name: "Roger", age: 50)
{:user, "Roger", 50}
iex(6)> user(user2)
[name: "Roger", age: 50]
user_recored.ex:
defmodule User do
require Record
Record.defrecord :user, [name: "Meg", age: "25"]
end
答案 1 :(得分:0)
根据Erlang文档:
rr(Module)
从模块的BEAM文件中读取记录定义。如果BEAM文件中没有记录定义,那么将查找并读取源文件。返回读取的记录定义的名称。模块是一个原子。
也就是说,如果代码已经被编译到BEAM,则可以使用Module.record_name/0
来获取信息。
如果代码尚未编译 ,您仍然可以使用Record.extract/2
从erlang头文件 record.hrl
中提取记录信息。>