美文网首页
Elixir-和 Erlang 互操作

Elixir-和 Erlang 互操作

作者: 你期待的花开 | 来源:发表于2018-11-14 17:37 被阅读17次

在 Erlang VM 上构建 Elixir 的好处之一就是已经有大量的库可以供我们使用。互操作性允许我们在 Elixir 代码中直接使用 Erlang 的标准库和三方库。

目录

  • 标准库
  • Erlang 三方依赖
  • 区别
    • 原子
    • 字符串
    • 变量

标准库

在任何 Elixir 代码中都能直接使用 Erlang 提供额标准库,Erlang 的模块用小写的原子变量标识,比如:os:timer

我们可以用 timer.tc 计算某个函数执行的时间:

defmodule Example do
  def timed(fun, args) do
    {time, result} = :timer.tc(fun, args)
    IO.puts("Time: #{time} μs")
    IO.puts("Result: #{result}")
  end
end

iex> Example.timed(fn (n) -> (n * n) * n end, [100])
Time: 8 μs
Result: 1000000

要了解所有可用的模块,请看 Erlang 参考手册

Erlang 三方依赖

引入 Erlang 的依赖,同 Mix 引入依赖,如果依赖的库不在 hex,你也可以直接使用 git 代码库的地址:

def deps do
  [{:png, github: "yuce/png"}]
end 

然后我们就可以使用 Erlang 的库了。

png =
  :png.create(%{:size => {30, 30}, :mode => {:indexed, 8}, :file => file, :palette => palette})

区别

知道怎么在 Elixir 中使用 Erlang ,我们还要讲讲操作 Erlang 语言会遇到的坑:

原子

Erlang 的原子和 Elixir 很相似,只是没有前面的冒号(:),Erlang 中的原子是小写字母和下划线的组合。
Elixir:

:example

Erlang:

example.

字符串

Erlang字符串用单引号表示,很像Elixir的字符列表。除了代表 Erlang 的字符列表之外,字符列表在和 Erlang 代码交互的时候经常会用到。

Elixir:

"Example String"

Erlang:

'Example String'.

有些 Erlang 的库不支持 binaries ,我们要把 Elixir 字符串转换成自古列表,不过 to_charlist/1 函数可以帮我们完成这个转换。

iex> :string.words("Hello World")
** (FunctionClauseError) no function clause matching in :string.strip_left/2

    The following arguments were given to :string.strip_left/2:

        # 1
        "Hello World"

        # 2
        32

    (stdlib) string.erl:1661: :string.strip_left/2
    (stdlib) string.erl:1659: :string.strip/3
    (stdlib) string.erl:1597: :string.words/2

iex> "Hello World" |> to_charlist() |> :string.words()
2

变量

Elixir:

iex> x = 10
10

iex> x1 = x + 10
20

Erlang:

1> X = 10.
10

2> X1 = X + 1.
11

相关文章

  • Elixir-和 Erlang 互操作

    在 Erlang VM 上构建 Elixir 的好处之一就是已经有大量的库可以供我们使用。互操作性允许我们在 El...

  • Erlang编程入门笔记

    文中所有操作均在Mac下完成,Windows可能略有出入,且作参考。 erlang Shell 进入erlang ...

  • Elixir-管道操作符

    管道操作符|>把前面表达式的结果传递给后面的表达式作为第一个参数。 编程可以变得很混乱,比如函数调用有多层嵌套以至...

  • Windows下安装配置RabbitMQ

    下载Erlang和RabbitMQ 官网下载地址 Erlang下载地址: http://www.erlang.or...

  • erlang-mnesia操作

    参考:https://www.jianshu.com/p/2d43992c829chttps://blog.csd...

  • Centos7 部署

    rabbitmq erlang安装 EPEL 地址 rabbitmq安装 rabbitmq下载地址 erlang和...

  • 码农周刊分类整理 -- E

    ERLANG Erlang vheap 刨析和注意事项(@淘宝褚霸) Erlang 内存体系调优(@淘宝褚霸) E...

  • Linux 安装RabbitMQ

    系统环境操作系统:CentOS7.2erlang:OTP 22.3RabbitMQ:rabbitmq-server...

  • centos7 安装rabbitMQ 踩坑

    1、安装mq,首先mq以来erlang插件,所以必须安装 erlang 插件 首先在mq官网查看mq和erlang...

  • 培训

    Sacla 安装, 需要 JDK 环境。Scala 可以和 Java 互操作。 Spark Core

网友评论

      本文标题:Elixir-和 Erlang 互操作

      本文链接:https://www.haomeiwen.com/subject/vnjymftx.html