이 코드를 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로 가져와야합니다. 라이브러리에는 이것을 수행하는 엘 릭크 모듈이 포함되어 있지 않습니다. 'xmpp/include/xmpp_codec.hrl'에 선언 된'message' 레코드를 발견 했으므로'from_lib : "deps/xmpp/include/xmpp_codec.hrl"'을 전달하기를 원할 것입니다. – Dogbert
카오스의 에이전트는 얼랭 (Erlang)에서 엘릭서 (Elixir)로 코드를 번역 할 때마다 잔인하게 강아지를 살해합니다. 강아지들에게 제발. – zxq9
죄송합니다. 하지만 나는 같은 일을하기 위해 Elixir 라이브러리를 가져 오는 것이 의미가 없다고 생각합니다. 생각? – Skhaz