Bagaimana saya bisa menerjemahkan potongan kode ini dari Erlang ke Elixir?

Erlang:

xmpp:get_text(Packet#message.body)

Eliksir:

:xmpp.get_text(packet ... ?
1
Skhaz 1 Desember 2017, 21:04

1 menjawab

Jawaban Terbaik

Ini adalah sintaks akses field record. Kode tersebut mengakses bidang body dari istilah Packet dengan asumsi bahwa Packet adalah catatan message. Elixir menyediakan modul Record untuk menangani hal ini. Anda harus terlebih dahulu mengimpor definisi rekaman menggunakan Record.extract (ubah jalur .hrl untuk menunjuk ke file hrl dependensi yang menyertakan definisi rekaman; cari -record(message di perpustakaan yang Anda gunakan) dan kemudian gunakan definisi itu. Berikut ini contohnya:

defmodule A do
  Record.defrecord :message, Record.extract(:message, from_lib: "path/to/file.hrl")
end

Sekarang Packet#message.body diterjemahkan menjadi A.message(packet, :body).

6
Dogbert 1 Desember 2017, 18:35