elixir erlang 简单调用学习
实际上基于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