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

elixir erlang 简单调用学习

时间:2024-01-05 17:23:35浏览次数:34  
标签: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 是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

标签:do,调用,app,mix,elixir,erlang
From: https://www.cnblogs.com/rongfengliang/p/17947681

相关文章

  • Handler创建Dispatcher请求调用执行Utility
    文章目录应用场景Handler创建Dispatcher请求创建响应1、创建响应工程2、书写响应代码3、打成jar包4、将导出的jar包放入DispatcherClient\lib下。5、修改DispatcherClient\conf下Service.properties文件6、修改Module\conf下translator.xml文件7、书写bomchange.bat,并......
  • 数据工程实践:从网络抓取到API调用,解析共享单车所需要的数据
    设想这样一个案例,当前共享单车应用广泛,在很多城市都有大量的投放,一方面解决了人们的短途快速出行问题,一方面对环境保护做出了贡献。但对于单车公司来说,如何确保单车投放在人们需要的地方?大量的共享单车聚集在市中心,且在雨雪等恶劣天气,人们又不会使用。这正是数据工程师可以发挥作用......
  • D3-Lagent 智能体工具调用 Demo
    现在还是使用 InternStudio 中的A100(1/4)机器、InternLM-Chat-7B 模型和 Lagent 框架部署一个智能工具调用Demo。Lagent是一个轻量级、开源的基于大语言模型的智能体(agent)框架,支持用户快速地将一个大语言模型转变为多种类型的智能体,并提供了一些典型工具为大语言模型赋能......
  • 使用Go语言的HTTP客户端库进行API调用
    随着微服务架构和RESTfulAPI的普及,API调用成为了日常开发中的常见任务。Go语言提供了多种工具和库来帮助开发者轻松地与API进行交互。本文将介绍如何使用Go语言的HTTP客户端库进行API调用。在Go语言中,标准库中的net/http包提供了基本的HTTP客户端功能。要使用net/http包进行API调......
  • 小程序更新版本(加载首页onLoad的时候调用)
    /***获取新版本信息*/exportfunctiongetNewVersionUpdateMessage(){console.log('版本更新!')constupdateManager=uni.getUpdateManager();updateManager.onCheckForUpdate(function(res){//请求完新版本信息的回调console.log(res.hasUpdate);......
  • rebar3 集成elixir 模块
    社区包含了一个rebar3的elixirmix插件,可以方便rebar使用elixir模块参考使用rebar.config配置{erl_opts,[debug_info]}.{deps,[%添加引用{decimal,"2.0.0"}]}.{shell,[{apps,[basic]}]}.%添加插件{plugins,[rebar_mix]}.{provider_hooks,[{......
  • erlang -type 以及-spec 使用
    很多时候我们编写的模块方法需要明确的参数类型,方便使用,-type以及-spec就提供了此能力参考使用app.erl-module(app).-export([myadd/1,mydemo/1]).-typeadd()::{integer(),integer()}.-specmyadd(add())->integer().myadd(Args)->{A,B}=Args,A+......
  • java调用rust 共享库的一些方法简单说明
    java与rust的调用,核心还是基于jni进行处理,rust社区实现了不少方便的工具可以提供rust到c的处理(比如生成头文件)以下是整理的一些资料,方便学习几个不错的包jni-rs 目前还在活跃更新中,同时github的start也比较多,同时不少开源软件在用,比如questdbrobusta 一个比较新的项目,使用......
  • elixir mjml_nif 试用
    mjml_nif是使用rustler包装的mrml基于了erlang的nif接口实现的elixir模块,同时为了方便预编译nif的使用,使用了rustler_precompiled,以下是一个简单的试用项目试用添加依赖defpdepsdo[{:mjml,"~>3.0"}]end代码集成lib/mail/rong.mail.exdefmoduleRo......
  • eqwalizer WhatsApp 开源的erlang类型检查工具
    可能大家都听说过WhatsApp对于erlang使用是比较多的,WhatsApp的IM系统就是基于erlang开发的,同时WhatsApp也开源了一些erlang周边的工具eqwalizer是一个类型检查的,可以与rebar以及非rebar项目集成参考使用基于rebar的项目下载工具https://github.com/WhatsApp/eqwalizer/......