elixir 調用erlang 代碼

備註:git

   項目比較簡單,主要是elixir 混合erlang 代碼,elixir 調用erlang 模塊方法
 
1. 初始化項目
 
 mix  new  erlangelixirdemo

項目結構以下:

├── README.md
├── config
│   └── config.exs
├── lib
│   └── erlangelixirdemo.ex
├── mix.exs
└── test
    ├── erlangelixirdemo_test.exs
    └── test_helper.exs

2. 添加erlang 支持
建立src 目錄,並編寫erlang code

項目結果以下:

├── README.md
├── config
│   └── config.exs
├── lib
│   └── erlangelixirdemo.ex
├── mix.exs
├── src
│   └── app.erl
└── test
    ├── erlangelixirdemo_test.exs
    └── test_helper.exs

src/app.erl  代碼以下:

-module(app).
%%API
-export([
login/0,
userlogin/0,
login/2,
userlogin/1
]).
-record(user, { name, age }).
login() ->
    {ok,'dalongdemo'}.

login(Name , Password) ->
    {ok,'appdemo'}.

userlogin()->
    #user{name='dalongdemo',age=44}.

userlogin(User)->
    User.
 
3. elixir 調用erlang 模塊方法
lib/erlangelixirdemo.ex 代碼以下:

defmodule Erlangelixirdemo do
  @moduledoc """
  Documentation for Erlangelixirdemo.
  """
  def call_erlang do
    IO.inspect :app.userlogin()
  end
end
 
4. 編譯訪問
 
iex  -S mix
Erlang/OTP 20 [erts-9.3] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]

Compiling 1 file (.erl)
Compiling 1 file (.ex)
Generated erlangelixirdemo app
Interactive Elixir (1.6.4) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> E
Elixir              Enum                Enumerable          
ErlangError         Erlangelixirdemo    Exception           

iex(1)> Erlang
ErlangError         Erlangelixirdemo    
iex(1)> Erlangelixirdemo.
MixProject       call_erlang/0    
iex(1)> Erlangelixirdemo.call_erlang
{:user, :dalongdemo, 44}
{:user, :dalongdemo, 44}
 
5. 說明
 
 默認mix compile 的時候,對於erlang 代碼是在src 目錄進行編譯的,同時能夠在 mix.exs 修改

def project do
    [
      app: :appdemo,
      version: "0.1.0",
      elixir: "~> 1.6",
      start_permanent: Mix.env() == :prod,
      deps: deps()
    ]
end

以下:

def project do
  [app: :my_app,
   version: "0.0.1",
   elixir: "~> 1.0",
   erlc_paths: ["src"], # ADD THIS OPTION
   build_embedded: Mix.env == :prod,
   start_permanent: Mix.env == :prod,
   deps: deps]
end
6. 參考代碼
https://github.com/rongfengliang/elixir-erlang
相關文章
相關標籤/搜索