このコードをErlangからElixirにどのように変換できますか?このコードをErlangからElixirにどのように変換できますか?
アーラン:
xmpp:get_text(Packet#message.body)
エリクサー:
:xmpp.get_text(packet ... ?
このコードをErlangからElixirにどのように変換できますか?このコードをErlangからElixirにどのように変換できますか?
アーラン:
xmpp:get_text(Packet#message.body)
エリクサー:
:xmpp.get_text(packet ... ?
これは、レコードのフィールドアクセスの構文です。そのコードは、Packet
がmessage
レコードであることを前提として、Packet
のフィールドbody
にアクセスします。 Elixirはこれに対処するレコードモジュールを提供します。 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)
に変換されます。
ありがとう@dogbert!私はこのライブラリを使っています。[1]、私はライブラリがすでにこれをしていると思いました。 1 - https://github.com/processone/xmpp – Skhaz
ライブラリはレコードを宣言しますが、それをElixirにプルする必要があります。このライブラリにはこれを行うElixirモジュールは含まれていません。 'xmpp/include/xmpp_codec.hrl'で宣言された' message'レコードが見つかりましたので、 'from_lib:" deps/xmpp/include/xmpp_codec.hrl "'を渡したいと思うでしょう。 – Dogbert
カオスのエージェントは、あなたがErlangからElixirへのコード行を翻訳するたびに残酷に子犬を殺します。子犬のために、してください。 – zxq9
申し訳ありません。しかし、私は同じ仕事をするElixirライブラリをインポートする意味がないと思う。思考? – Skhaz