没有合适的资源?快使用搜索试试~ 我知道了~
首页elixir中文入门文档
elixir中文入门文档
需积分: 50 196 浏览量
更新于2023-03-16
评论
收藏 1.75MB PDF 举报
elixir中文入门文档,ruby+erlang=elixir,高并发开发。
资源详情
资源评论
资源推荐

目录
目 录
Elixir 入门文档中文(简体)翻译计划
Translate official elixir getting started guide into simplified chinese
入门
第一章 - 互动模式(iex) ✓✓
第二章 - 基础数据结构 ✓✓
第三章 - 基础操作符 ✓✓
第四章 - 模式匹配 ✓✓
第五章 - case,cond和if ✓✓
第六章 - 二进制,字符串和字符列表 ✓✓
第七章 - 关键字,表单和字典 ✓✓
第八章 - 模块 ✓✓
第九章 - 递归 ✓✓
第十章 - 可枚举类和流 ✓✓
第十一章 - 进程 ✓✓
第十二章 - IO ✓✓
第十三章 - alias,require和import ✓✓
第十四章 - 模块属性 ✓✓
��第十五章 - Structs ✓✓
第十六章 - 协议 ✓✓
第十七章 - try,catch和rescue ✓✓
第十八章 - Comprehensions ✓✓
第十九章 - Sigils ✓✓
第二十章 - 更多内容 ✓✓
Mix - Elixir的编译工具
第一章 - 简介 ✓✓
第二章 - 用Mix来编译OTP应用 ✓✓
第三章 - 定制Mix任务 ✓✓
EXUNIT - 单元测试工具
第一章 - 简介
Elixir元编程
第一章 - 引用和去引用
第二章 - 宏
第三章 - 领域特定语言

第一章 - 互动模式(iex)
第一章 - 互动模式(iex)
1 Elixir的交互模式,iex
欢迎!
在这个系列的教程中,我们将学习elixr的一些基本知识。在这章之中将会涉及到如何安装和如何使用elixir的交互模式,iex。
如果你在教程或者网站上发现了错误,请提交报告或者发一个pull request到我们的issue tracker上。如果你怀疑可能遇到了一个语言本
身的bug,请汇报至elixir语言的issue tracker。
让我们开始吧!
1.1 安装Erlang
Elixir依赖于17.0版或者更新的Erlang,你可以很容易地通过预编译的包来安装。如果你想直接从源代码安装,你可以直接从Erlang的官方
网站上下载源代码,在Riak的官方文档中有一篇非常详尽的教程会指导你如何安装。
如果你打算在Windows上开发,最佳的方式是安装预编译的安装包。如果你是在一个类Unix的系统上,一般来说你系统上的包管理器很
可能已经提供了相应的安装包。
注意,Elixir需要的是17.0以上的版本的Erlang,由于17.0刚发布不久,你系统上的包管理器很可能还没有升级。
安装完Erlang之后,你应该检查一下安装的结果,在命令行中键入erl,如果一切正常你应该能看到这样的一条信息:
Erlang/OTP 17 (erts-6) [64-bit] [smp:2:2] [async-threads:0] [hipe] [kernel-poll:false]
根据你如何安装,在某些情况下Erlang的二进制命令可能不在你的PATH上。那样的话,你就需要手动地把它们加到PATH里面去。
在Erlang一切就绪之后,我们就可以安装Elixir了。你可以通过三种方式安装,发行版,预编译包和从源代码安装。
1.2 发行版
到目前为止,Elixir v0.13有希望在某些os的发行版上直接安装了:
Mac OSX上的Homebrew
升级Homebrew到最新brew update
安装Elixir:brew install elixir
Fedora 17+和Fedora Rawhide
sudo yum -y install elixir
Arch Linux (Aur)
yaourt -S elixir
OpenSUSE (和SLES 11 SP3+)
添加Erlang开发源 zypper ar -f obs://devel:languages:erlang/ erlang
安装Elixir zypper in elixir
Gentoo
emerge --ask dev-lang/elixir
Chocolatey for Windows
cinst elixir
如果你用的OS并不是以上的任何之一,别担心,我们也提供了已经编译好的安装包!
1.3 预编译安装包
Elixir的每一个release都提供了预先编译好的安装包。只要下载之后解压,就可以之间受用bin目录下的elixr和iex命令。同时我们也建
议你把bin目录加入到系统的PATH 里去,这样就能为以后的开发省去不少的麻烦。
1.4 从源代码编译(Unix和MinGW)
只需简单的几步就可以下载和编译Elixir。你可以这里下载Elixir的最新的代码,在解压缩之后的目录里运行make。如果没有出错,你就可
以运行bin目录下的elixir和iex命令。同样,我们也建议把bin所在的目录加入PATH。
export PATH="$PATH:/path/to/elixir/bin"
万一你想尝鲜的话,你还可以从git master编译:
$ git clone https://github.com/elixir-lang/elixir.git
$ cd elixir

$ make clean test
如果上面的测试都通过了,就表明一切就绪。否则,请提交一个错误报告在Github的issue tracker上。
1.5 互动模式
Elixir提供了三个新的可执行命令:iex, elixir和elixirc。如果你是从源代码编译或者直接用的打包好的,你会发现这三个命令
在bin目录下。
现在,让我们开始常识着运行互动模式iex, iex是“互动Elixir”(Interactive Elixir)的缩写。在互动模式中,我们可以输入任何的
Elixir表达式,直接可以看到运行的结果。让我们运行几个例子来热热身:
Interactive Elixir - press Ctrl+C to exit (type h() ENTER for help)
iex> 40 + 2
42
iex> "hello" <> " world"
"hello world"
看起来我们已经一切就绪了!在下面的章节之中,我们将会频繁地使用到互动模式,它会帮助我们熟悉语言的结构和基本数据类型。就从
下一章开始。

第二章 - 基础数据结构
第二章 - 基础数据结构
2 基础数据结构
在这章中我们将学习Elixir中的一些基础的数据结构:整数,浮点数,原子,列表和字符串。它们是:
iex> 1 # integer
iex> 0x1F # integer
iex> 1.0 # float
iex> :atom # atom / symbol
iex> "elixir" # string
iex> [1, 2, 3] # list
iex> {1, 2, 3} # tuple
2.1 基础运算
打开iex, 输入下面的表达式:
iex> 1 + 2
3
iex> 5 * 5
25
iex> 10 / 2
5.0
你可能注意到了,在Elixir中调用函数时圆括号并不是必须的。
Elixir同时也支持二进制,八进制和十六进制的数字:
iex> 0x1F
31
iex> 0o777
511
iex> 0b1010
10
浮点数表达式需要在一个点之后跟随至少一位数字,同时也支持e的乘方的形式:
iex> 1.0
1.0
iex> 1.0e-10
1.0e-10
在Elixir中,浮点数都是64位双精度。
2.2 布尔值
Elixir支持两种布尔值,true和false。
iex> true
true
iex> true == false
false
Elixr提供了一些谓语函数用来检查值的类型。比如,函数is_boolean/1能被用来检查一个值是不是布尔值:
注意:在Elixir里,用函数名加参数量的组合来识别一个函数。因此,is_boolean/1代表一个函数的名字是is_boolean,接受的参
数量是一个。而is_boolean/2(并非真实存在于Elixir里)是另一个函数,虽然名字和之前那个相同,但是接受不同参数的参数。
iex> is_boolean(true)
true
iex> is_boolean(1)
false
你也可以用is_integer/1来检查参数是否是整数,用is_float/1检查参数是否是浮点数或者用is_number/1检查参数是否是上面两个
其中之一。
注意:在任何时候你都可以在控制台中键入h来打印出帮助信息。h函数也能被用来访问函数的文档。例如,输入h is_integer/1会
打印出函数is_integer/1的文档。它也能用在操作符和其他的构件上(试试h ==/2)。
2.3 原子
原子是一些以名字为值的恒量。在其他的一些语言中,也称为符号(Symbols)。
iex> :hello
:hello
iex> :hello == :world

false
事实上,布尔值true和false就是原子:
iex> true == :true
true
iex> is_atom(false)
true
2.4 字符串
在Elixir中字符串必须用双引号来表达,并且用UTF-8来编码:
iex> "hellö"
"hellö"
Elixir也支持字符串嵌套:
iex> "hellö #{:world}"
"hellö world"
结束符可以直接放置在字符串中,也可以用escape sequences:
iex> "hello
...> world"
"hello\nworld"
iex> "hello\nworld"
"hello\nworld"
你能用IO模块中的函数IO.puts/1来打印字符串:
iex> IO.puts "hello\nworld"
hello
world
:ok
注意函数在打印完之后用原子作为返回值。
在Elixir中,字符串在底层是用二进制,也就是字节来实现的:
iex> is_binary("hellö")
true
我们也能得到一个字符串的字节数:
iex> byte_size("hellö")
6
请注意在上面的例子中,虽然字符串只有5个字符,但它的字节数是6。这是因为在UTF-8中字符"ö"需要占用两个字节。要得到字符串的
实际字符长度,我们可以用函数String.length/1:
iex> String.length("hellö")
5
Elixir标准库中的字符串模块包含了一些用来对字符串进行Unicode标准操作的函数:
iex> String.upcase("hellö")
"HELLÖ"
谨记,在Elixir里
双引号字符串
和
单引号字符串
是不一样的,它们的底层实现的数据类型是不同的:
iex> 'hellö' == "hellö"
false
我们会在第六章二进制,字符串和字符列表中学习到更多关于Unicode支持和单双引号字符串之间的不同之处。
2.5 匿名函数
函数用关键值fn和end来表达:
iex> add = fn a, b -> a + b end
#Function<12.71889879/2 in :erl_eval.expr/5>
iex> is_function(add)
true
iex> is_function(add, 2)
true
iex> is_function(add, 1)
false
iex> add.(1, 2)
3
在Elixir中函数是“第一等公民”,这意味着它们能被想整数和字符串一样当成参数传给别的函数。在上面的例子里,我们把变量指向的函
数add传给了另一个函数is_function/1,并且返回了正确的结果,true。我们也能用is_function/2来检查一个函数接受的函数数
量。
注意当调用一个匿名函数时,在指向这个匿名函数的变量名和圆括号之间需要有一个点号(.)。
匿名函数本身也是一个闭包,因此它们能够访问在被定义时的同视域的其他变量:
iex> add_two = fn a -> add.(a, 2) end
#Function<6.71889879/1 in :erl_eval.expr/5>
iex> add_two.(2)
4
剩余62页未读,继续阅读













安全验证
文档复制为VIP权益,开通VIP直接复制

评论0