📜  Elixir-环境(1)

📅  最后修改于: 2023-12-03 15:00:35.694000             🧑  作者: Mango

Elixir-环境

介绍

Elixir 是一种面向并发、可伸缩的编程语言,它运行在 Erlang 虚拟机上。Elixir 借鉴了 Ruby 的语法和功能,通过 Erlang 的虚拟机获得了高并发、分布式和容错能力。Elixir 的语法清晰简洁,易于阅读和学习,同时它还提供了一些方便的编程工具和库。

安装

安装 Elixir 非常简单,在官网上下载相应的二进制文件,然后按照说明进行安装即可。例如,在 macOS 上可以使用 Homebrew 安装,命令如下:

brew install elixir

如果你使用的是其他平台,可以访问官网了解如何安装。

使用

使用 Elixir 编写的程序通常保存在以 .ex.exs 结尾的文件中。其中,.ex 文件通常用于编译成可执行文件,而 .exs 文件则用于编写脚本程序。接下来我们来编写一个简单的 Elixir 程序。

# hello.exs

defmodule Hello do
  def world do
    IO.puts("Hello, world!")
  end
end

Hello.world()

这个程序定义了一个 Hello 模块,其中包含一个 world 函数。当我们执行这个程序时,会打印出 Hello, world!

elixir hello.exs
数据类型

Elixir 中有许多基本的数据类型,包括整数、浮点数、布尔值、原子、字符串、列表和元组等。例如:

# integer

1 + 2 # 3

# float

1.0 / 2.0 # 0.5

# boolean

true && false # false

# atom

:ok

# string

"hello, world!"

# list

[1, 2, 3]

# tuple

{:ok, "hello"}
函数和模块

Elixir 中函数和模块是编写程序的基本单位。一个模块通常由多个函数组成,可以使用 defmoduledefdefp 等关键字来定义。例如:

# math.ex

defmodule Math do
  def add(a, b) do
    a + b
  end

  def sub(a, b) do
    a - b
  end

  defp mul(a, b) do
    a * b
  end
end

这个程序定义了一个 Math 模块,其中包含三个函数,其中 mul 函数是一个私有函数,只能在该模块内部使用。

模块定义完成后,我们就可以在其他文件中使用该模块了。例如:

# main.exs

import Math

IO.puts(add(1, 2)) # 3
IO.puts(sub(3, 4)) # -1

在这个程序中,我们使用了 import 关键字来导入 Math 模块,然后就可以使用该模块中定义的函数了。当我们执行这个程序时,会打印出 3-1

进程和消息传递

Elixir 的最大特点之一就是支持并发编程。在 Elixir 中,每个进程都是独立的,它们之间通过消息传递来进行通信。例如:

# greeter.ex

defmodule Greeter do
  def start do
    spawn(__MODULE__, :loop, [])
  end

  defp loop do
    receive do
      {:hello, name} -> IO.puts("Hello, #{name}!")
      {:bye, name} -> IO.puts("Bye, #{name}!")
    end

    loop()
  end
end

这个程序定义了一个 Greeter 模块,其中包含一个 start 函数。当我们调用 start 函数时,会创建一个新的进程来执行 loop 函数。

# main.exs

pid = Greeter.start()

send(pid, {:hello, "John"})
send(pid, {:bye, "John"})

在这个程序中,我们调用 Greeter.start 函数来创建一个新的进程。然后,我们使用 send 函数向该进程发送两个消息,分别是 {:hello, "John"}{:bye, "John"}

在进程中,我们使用 receive 函数来接收消息,并根据消息中的内容进行不同的处理。在这个例子中,当接收到 {:hello, name} 消息时,会打印出 Hello, name!,当接收到 {:bye, name} 消息时,会打印出 Bye, name!。当我们执行这个程序时,会先打印出 Hello, John!,然后打印出 Bye, John!

总结

Elixir 是一个强大、灵活、易于学习的编程语言。它的出现为并发编程提供了更好的解决方案,让程序员能够更加轻松地编写复杂的并发应用程序。