2017-12-01 14 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로 가져와야합니다. 라이브러리에는 이것을 수행하는 엘 릭크 모듈이 포함되어 있지 않습니다. 'xmpp/include/xmpp_codec.hrl'에 선언 된'message' 레코드를 발견 했으므로'from_lib : "deps/xmpp/include/xmpp_codec.hrl"'을 전달하기를 원할 것입니다. – Dogbert