如何将这段代码从Erlang翻译成Elixir?

时间:2017-12-01 18:04:08

标签: erlang elixir ejabberd

如何将这段代码从Erlang翻译成Elixir?

二郎:

xmpp:get_text(Packet#message.body)

药剂:

:xmpp.get_text(packet ... ?

1 个答案:

答案 0 :(得分:6)

这是记录字段访问语法。假设bodyPacket记录,该代码将访问术语Packet的字段message。 Elixir提供了一个Record模块来处理这个问题。您需要先使用Record.extract导入记录的定义(更改.hrl路径以指向包含记录定义的依赖项hrl文件;在您正在使用的库中搜索-record(message,然后使用该定义。这是一个例子:

defmodule A do
  Record.defrecord :message, Record.extract(:message, from_lib: "path/to/file.hrl")
end

现在Packet#message.body会转换为A.message(packet, :body)