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)
这是记录字段访问语法.该代码访问该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).