Elixir是一种快速,动态和可扩展的语言,已Swift被初创企业人群和已建立企业的生产应用所采用。
仅举几例,Pinterest,Brightcove,Discord和Canvas都在Elixir上运行,而Elixir又利用了低延迟,容错的Erlang VM,这意味着可以完全访问Heroku,WhatsApp,克拉纳和芭蕉。
语法是什么样的?
该语法具有功能性,并促进了简短,快速的编码风格,使用户可以轻松抽象其数据:
%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被充分利用时,将会取得巨大的收益。
翻译自: https://code.tutsplus.com/tutorials/introduction-to-erlang-and-elixir--cms-27509

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/30951.html