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

Skh*_*haz 1 erlang elixir ejabberd

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

二郎:

xmpp:get_text(Packet#message.body)
Run Code Online (Sandbox Code Playgroud)

药剂:

:xmpp.get_text(packet ... ?
Run Code Online (Sandbox Code Playgroud)

Dog*_*ert 6

这是记录字段访问语法.该代码访问该body术语的字段,Packet假设它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
Run Code Online (Sandbox Code Playgroud)

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