Elixir是一种快速,动态和可扩展的语言,已Swift被初创企业人群和已建立企业的生产应用所采用。
仅举几例,Pinterest,Brightcove,Discord和Canvas都在Elixir上运行,而Elixir又利用了低延迟,容错的Erlang VM,这意味着可以完全访问Heroku,WhatsApp,克拉纳和芭蕉。
从本教程开始,您将学习基础知识,以开始使用Erlang和Elixir编码。
语法是什么样的?
该语法具有功能性,并促进了简短,快速的编码风格,使用户可以轻松抽象其数据:
%User{name: name, age: age} = User.get("John Doe")
name #=> "John Doe"
与卫兵结合使用时,我们拥有强大的结构:
def serve_drinks(%User{age: age}) when age >= 21 do
# Code that serves drinks!
end
serve_drinks User.get("John Doe")
#=> Fails if the user is under 21
可以缩放吗?
肯定的 ; Elixir在构建时就考虑了可扩展的分布式系统。
在多个进程可以通过消息相互通信的环境中,Elixir具有线程执行(称为进程)的功能。
这些轻量级线程可以同时运行数十万个线程 。 Elixir出色的垃圾收集器可用于每个隔离线程,从而确保在整个系统范围内实现最佳性能,并防止资源锁定。
容错能力
Elixir具有Supervisors
,可以在出现问题时重新启动系统的某些部分,并将系统还原到已知可以正常工作的初始状态。
如何获得长生不老药
在我们继续之前,请在您的机器上安装Elixir:
Mac OS X
- 家酿
- 将您的自制软件更新到最新:
brew update
- 运行:
brew install elixir
- 将您的自制软件更新到最新:
- 麦克波特
- 运行:
sudo port install elixir
- 运行:
Unix(和类Unix)
- Arch Linux(社区存储库)
- 运行:
pacman -S elixir
- 运行:
- openSUSE(和SLES 11 SP3 +)
- 添加Erlang开发仓库:
zypper ar -f http://download.opensuse.org/repositories/devel:/languages:/erlang/openSUSE_Factory/ erlang
- 运行:
zypper in elixir
- 添加Erlang开发仓库:
- Gentoo
- 运行:
emerge --ask dev-lang/elixir
- 运行:
- GNU Guix
- 运行:
guix package -i elixir
- 运行:
- Fedora 21(及更早版本)
- 运行:
yum install elixir
- 运行:
- FreeBSD
- 从端口:
cd /usr/ports/lang/elixir && make install clean
- 在pkg中:
pkg install elixir
- 从端口:
- Ubuntu 12.04和14.04 / Debian 7
- 添加Erlang Solutions仓库:
wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb && sudo dpkg -i erlang-solutions_1.0_all.deb
- 运行:
sudo apt-get update
- 安装Erlang / OTP平台及其所有应用程序:
sudo apt-get install esl-erlang
- 安装Elixir:
sudo apt-get install elixir
- 添加Erlang Solutions仓库:
视窗
- Web安装程序
- 下载安装程序
- 单击下一步,下一步,…,完成
- 巧克力味
-
cinst elixir
-
互动发展
Elixir具有交互模式 ,我们可以通过命令行提示符进行访问,如下所示:
$ iex
Interactive Elixir - press Ctrl+C to exit (type h() ENTER for help)
iex> c "my_file.ex" # Compiles a file
iex> t Enum # Prints types defined in the module Enum
iex> h IEx.pry # Prints the documentation for IEx pry functionality
iex> i "Hello, World" # Prints information about the given data type
Windows用户将需要运行 iex.bat
来访问交互式控制台。
进入此模式时,我们可以键入任何Elixir
代码并立即获得返回值,因此对于开始学习该语言非常有用。
让我们做一些基本的表达:
ie> 2 + 2
4
ie> round(3.58)
4
iex> "hello" <> " world"
"hello world"
运行脚本时,我们从shell终端执行以下操作:
$ elixir scriptName.exs
要从脚本输出到终端,我们需要使用以下IO
类:
IO.puts "Hello world from Elixir"
那么模块呢?
Elixir提供了模块,因此开发人员可以通过多种方式扩展语言。
这是使用Elixir的测试框架ExUnit的示例 :
defmodule MathTest do
use ExUnit.Case, async: true
test "can add two numbers" do
assert 1 + 1 == 2
end
end
您可以通过设置async: true
并行运行测试。 在此设置中,Elixir使用尽可能多的CPU内核。
同时, assert
可以检查代码中的断言失败。 这些功能是使用Elixir宏构建的,因此可以像将其作为Elixir语言本身的一部分一样添加整个新结构,这意味着可以针对您可能需要的生产力(在这种情况下进行单元测试)进行完全自定义。
还有更多!
Elixir是一种功能强大且用途广泛的语言,目前已被世界上一些最大的应用程序使用。 Supervisor
具有快速的编译时间,轻量级的线程处理,DSL模块的可扩展性以及容错能力,因此它是任何认真的Web开发团队的理想选择。 显然,当Elixir被充分利用时,将会取得巨大的收益。
在下一部分中,我们将继续介绍Elixir的可用数据类型以及如何编写更多代码,最后将开始进行编译!
翻译自: https://code.tutsplus.com/tutorials/introduction-to-erlang-and-elixir--cms-27509