Это запись erlang (это кортеж, первый элемент — атом, остальные элементы — списки/строки/двоичные файлы).
Рекомендуется:
В Ejabberd есть определение jid-записи (строка 411):
-record(jid, {user = <<"">> :: binary(),
server = <<"">> :: binary(),
resource = <<"">> :: binary(),
luser = <<"">> :: binary(),
lserver = <<"">> :: binary(),
lresource = <<"">> :: binary()}).
Он находится в файле ejabberd/include/jlib.hrl
, поэтому вы должны сообщить об этом своему модулю, включив его следующим образом:
-include_lib("ejabberd/include/jlib.hrl").
Теперь в вашем модуле для доступа к (первому) элементу «timok» ваших данных вы можете использовать синтаксис записи erlang (при условии, что JidData содержит данные, упомянутые выше):
Out = JidData#jid.user.
Не рекомендуется:
Поскольку записи, по внешнему виду, являются кортежами, вы также можете получить доступ к n-му элементу кортежа.
Out = element(2,JidData).
Или просто используйте сопоставление с образцом:
{_, Out, _, _, _, _} = JidData.
Использовать определения записей
Запись — это, по сути, синтаксический сахар кортежа. Он остается кортежем и может рассматриваться как таковой. С ними легко работать, но вы должны сделать все возможное, чтобы не рассматривать запись как кортеж, если вы действительно не знаете, что делаете.
И поскольку в этом случае вы даже не контролируете определение записи, вам действительно следует его использовать, иначе изменения в определении после обновления сделают ваш код недействительным.
person
Berzemus
schedule
09.07.2014