首页 > 其他分享 >elixir erlang 简单调用学习

elixir erlang 简单调用学习

时间:2024-01-08 18:04:20浏览次数:25  
标签:do 调用 app mix 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
  • 代码简单说明
    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 的

elixir erlang 简单调用学习_参考资料

erlang 调用elixir 的

elixir erlang 简单调用学习_参考资料_02

说明

我很早学习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

标签:do,调用,app,mix,elixir,erlang
From: https://blog.51cto.com/rongfengliang/9148159

相关文章

  • elixir mix observer 工具的使用
    默认elixirmix没有添加observer工具的依赖直接运行会提示找不到方法解决方法添加几个额外的依赖主要是observer,:wx,:runtime_tools这几个 defapplicationdo[extra_applications:[:logger,:observer,:wx,:runtime_tools]]end说明注意可能不同版本elixi......
  • elixir config 简单说明
    elixir的config模块,实际上就是标准的方法,只是mix项目中在使用的时候使用了dsl模式的,没有使用包含括号的模式调用给人一种似乎觉得有点怪的调用模式参考代码只说明config方法,实际上Config模块还包含了其他方法mix中的调用 importConfigconfig:ecto_demo,Dalong.App,......
  • elixir mix 自定义任务
    elixir的mix比较灵活,同时也比较强大,很多时候我们可以自己定义一个任务,方便运行以及构建,不少三方框架会提供一些方便的cli,一般也会使用此方法比如ectoorm框架,以下是一个简单的自定义task学习参考开发目录位置这个实际上都f放那里可以,只是有一个简单的约定,建议放到lib/mix/......
  • elixir 模块名一些参考资料
    elixir的模块名实际上是一个atom类型的数据,以下是一些参考资料参考使用比如一个mixsup项目defmoduleEctoDemo.ApplicationdouseApplication@impltruedefstart(_type,_args)dochildren=[]#此处name实际上就是使用了模块名格式的,因为是......
  • elixir defdelegate 使用
    delegate模式,在不少语言都支持,有些是隐式的(一些早期语言),有些是显式的(新语言,kotlin,swift等)elixir也支持delegate处理,还是比较方便的,以下是一个简单的使用定义原始方法default.ex defmoduleDefaultdodeflogin(name,password)doIO.puts"fromDefault.login"......
  • absinthe elixir 的graphql 框架简单试用
    absintheelixir的graphql框架包含的特性graphql草案的完整实现插件化设计异步字段解析以及批量解析,同时支持插件化的解析支持安全包含了基于GraphiQL的playground项目测试基于了phoenix框架创建phoenix项目mixphx.newabsinthe_phx添加sqliteecto依赖默认phoenix使用了......
  • elixir apply 结合 macro 一个方便的开发技巧
    此玩法实际在Phoenixelixir项目中使用比较多,以下是一个简单的示例示例代码login.exdefmoduleLogindodefdemoappdoquotedoimportunquote(__MODULE__)endenddefdalongdoIO.puts("dalongdemo")enddefmacro__using__(which)whenis_......
  • elixir macro defoverridable 功能
    基于macro的包装函数可以使用defoverridable可以方便进行方法的重写参考使用app.exdefmoduleAppdodefmacro__using__(_options)doquotedodefinitdoIO.puts"doinit"enddeflogindoIO.puts"dologin"end......
  • wasmex webassenbly elixir 运行时
    wasmex是基于wasmtime以及rustnif开发的方便elixir运行webassembly的框架与rust的集成与rust集成使用的三方包 与mjml工具类似使用了rustler_precompiled以及rustlerrust使用的三方包 前边也说了是基于了wasmtime包装的,同时使用了wasmtimewasi一些子模块说明rustle......
  • erlang 多版本管理工具
    对于日常开发中,多版本还是比较重要的,erlang多版本管理工具也包含不少包含的工具asdf 多用途的软件多版本管理工具kerl 核心是处理erlang多版本的kiex 基于了kerl以及ruby的一些工具,目前似乎缺少维护了说明目前比较推荐的是kerl以及asdf,当然还得看场景,如果是运行环境可以直......