2017-12-01 13 views
1

このコードをErlangからElixirにどのように変換できますか?このコードをErlangからElixirにどのように変換できますか?

アーラン:

xmpp:get_text(Packet#message.body) 

エリクサー:

:xmpp.get_text(packet ... ? 
+0

カオスのエージェントは、あなたがErlangからElixirへのコード行を翻訳するたびに残酷に子犬を殺します。子犬のために、してください。 – zxq9

+0

申し訳ありません。しかし、私は同じ仕事をするElixirライブラリをインポートする意味がないと思う。思考? – Skhaz

答えて

6

これは、レコードのフィールドアクセスの構文です。そのコードは、Packetmessageレコードであることを前提として、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.bodyA.message(packet, :body)に変換されます。

+0

ありがとう@dogbert!私はこのライブラリを使っています。[1]、私はライブラリがすでにこれをしていると思いました。 1 - https://github.com/processone/xmpp – Skhaz

+1

ライブラリはレコードを宣言しますが、それをElixirにプルする必要があります。このライブラリにはこれを行うElixirモジュールは含まれていません。 'xmpp/include/xmpp_codec.hrl'で宣言された' message'レコードが見つかりましたので、 'from_lib:" deps/xmpp/include/xmpp_codec.hrl "'を渡したいと思うでしょう。 – Dogbert

関連する問題