Что такое iex-эквивалент erl 'rr'?
В оболочке Эрланга, erl
, Я могу использовать rr(Mod)
загрузить определения записей из указанного модуля. Это позволяет мне видеть имена полей при просмотре записи в оболочке.
Что эквивалентно 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}
2 ответа
Вы можете получить имена полей с 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
Согласно документам Эрланга:
rr(Module)
Считывает определения записей из файла модуля BEAM. Если в файле BEAM нет определений записей, исходный файл находится и читается вместо него. Возвращает имена прочитанных определений записей. Модуль это атом.
Тем не менее, если код уже скомпилирован в BEAM, вы можете использовать Module.record_name/0
чтобы получить информацию.
Если код еще не скомпилирован, вы все равно можете извлечь информацию о записи из заголовочного файла erlang record.hrl
с Record.extract/2
,