Erlang 和 Elixir 的互操作

Elixir调用Erlang的代码

Elixir调用Erlang的代码非常简单,就是将Erlang相应的模块前面加上“:”符号。然后用“.”代替Erlang的“:”符号。

好了如下面的Erlang代码

ists:sort([3, 2, 1]).

在Elixir中直接可以写成 elixir :lists.sort([3, 2, 1])

非常简单方便

Erlang调用Elixir代码

首先要在rebar.config中添加Elixir的依赖

deps, [{ elixir, "1.1.*",
         {git, "git://github.com/elixir-lang/elixir",{tag,"v1.1.1"}}}]}.

接着要在rebar.config中添加lib支持

{lib_dirs, [
  "deps/elixir/lib"
]}.

这样我们才能使用Elixir相关的类库。

如果我们想在Rebar工程中混合使用Elixir和Erlang,那么就需要使用rebar的插件了。该插件地址为:https://github.com/yrashk/rebar_elixir_plugin

同样,我们需要在rebar.config中进行下配置 erlang {deps, [{ rebar_elixir_plugin, ".*", {git, "git://github.com/yrashk/rebar_elixir_plugin"}}]}. %% Let rebar know about the new plugins {plugins, [rebar_elixir_compiler, rebar_exunit] }. 用Rebar生成独立运行的环境

为了能让我们生成独立运行的环境,我们还需要在realtool.config中添加

{app, elixir, [{mod_cond, app},{incl_cond, include},{lib_dir,"../deps/elixir/lib/elixir"}]}

在rebar.config中添加

{post_hooks, [{compile, "rm -rf deps/elixir/ebin"}]}.

这样做是为了让rebar在编译之后删除deps下Elixir没有生成beam的ebin,当我们使用incl_cond的时候,我们才不会发生多个地方存在elixir.app的冲突。

Power by Vultr and AiWiki
Copyright © 2019 David Fox All Rights Reserved.