elixir erlang 简单调用学习

发布时间 2024-01-05 17:14:15作者: 荣锋亮

实际上基于elixir 的mix 进行erlang 以及elixir 的互调用开发处理是很方便的,mix 直接就包含了构建erlang代码
同时对于代码的互调用,只要使用符合语言格式要求就行了,以下是一个简单的互调用学习

项目准备

  • 项目结构
 
├── README.md
├── lib
├── a.ex
└── er_app.ex
├── mix.exs
└── my_erlang_src
    ├── app.erl
    └── demo.hrl
  • 代码简单说明
    lib 是elixir 模块代码的,my_erlang_src 是erlang 的
    mix.exs 配置
 
def project do
    [
      app: :er_app,
      version: "0.1.0",
      elixir: "~> 1.15",
      erlc_paths: ["my_erlang_src"], # 此处配置erlang 代码位置
      start_permanent: Mix.env() == :prod,
      deps: deps()
    ]
end

app.erl 一个简单的erlang模块,包含了引用定义,以及调用elixir 模块代码

-module(app).
 
-export([init/0,app/0]).
 
-include("demo.hrl").
 
init() ->
    Info = #dalong{name=test,age=18}, % 使用record
    io:format("this is a demo \r\n ~w",[Info]).
 
app() ->
    'Elixir.A':myinit(). % 调用 elixir 模块代码

demo.hrl

-define(APPNAME, ?MODULE).
-record(dalong, {name,age}).

a.ex 一个简单的elixir 模块

defmodule A do
  def myinit do
    IO.puts "A.myinit"
  end
end

er_app.ex 调用erlang 模块代码,注意格式

defmodule ErApp do
  def demoapp do
    :app.init()
  end
end

测试&效果

  • 运行
    直接使用iex 就行了,会自动构建,比较方便
 
iex -S mix

调用erlang 的


erlang 调用elixir 的

说明

我很早学习elxiir 的时候写过一个简单的介绍,现在重新学习发现mix 工具很方便,很强大,rebar3 是erlang 一个方便的包管理工具,实际上
对于erlang 项目直接基于mix 也是可以的

参考资料

https://github.com/rongfengliang/elixir_erlang_basic_invoke_learning
https://hexdocs.pm/mix/1.13/Mix.Tasks.Compile.Erlang.html