Fork me on GitHub

基础

Some contents of this translation may be outdated.
Several major changes were applied to the original lesson since the last update.

安装,基本类型和基本操作。

目录

安装

安装 Elixir

各个 os 的安装说明可以在 Elixir-lang.org 网站上 Installing Elixir 部分找到。

交互模式

Elixir 自带了 iex 这样一个交互 shell, 可以让我们随时计算 Elixir 表达式的值。

运行 iex 命令,让我们开始教程:

Erlang/OTP 19 [erts-8.0.2] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]

Interactive Elixir (1.4.0) - press Ctrl+C to exit (type h() ENTER for help)
iex>

基本类型

整数类型

iex> 255
255

Elixir 语言本身就支持二进制、八进制和十六进制的整数:

iex> 0b0110
6
iex> 0o644
420
iex> 0x1F
31

浮点类型

在 Elixir 语言中,浮点数要求小数点之前必须有至少一个数字;支持 64 位多精度和 e 表示的科学计数:

iex> 3.14
 3.14
iex> .14
** (SyntaxError) iex:2: syntax error before: '.'
iex> 1.0e-10
1.0e-10

布尔类型

Elixir 支持 truefalse 两种布尔值,除了 falsenil 之外所有的值都为真。

iex> true
true
iex> false
false

原子类型

原子类型是名字和代表的值相同的常量,如果你熟悉 Ruby,它们和符号类型同义。

iex> :foo
:foo
iex> :foo == :bar
false

注意:布尔值 truefalse 实际上就是对应的原子 :true:false

iex> true |> is_atom
true
iex> :true |> is_boolean
true
iex> :true === true
true

Elixir 模块的名字也是原子,即使实际上还不存在这个模块,MyApp.MyModule 是一个合法的原子名称。

iex> is_atom(MyApp.MyModule)
true

原子也可以用来直接引用 Erlang 标准库的模块,包括内置的模块。

iex> :crypto.rand_bytes 3
<<23, 104, 108>>

字符串

Elixir 的字符串是 UTF-8 编码的,用双引号包住:

iex> "Hello"
"Hello"
iex> "dziękuję"
"dziękuję"

字符串支持换行符和转义字符:

iex> "foo
...> bar"
"foo\nbar"
iex> "foo\nbar"
"foo\nbar"

基本操作

算术运算

如你所想,Elixir 支持基本的 +-*/操作符,不过要注意 / 的结果是浮点数。

iex> 2 + 2
4
iex> 2 - 1
1
iex> 2 * 5
10
iex> 10 / 5
2.0

如果你需要整数除法和求余,Elixir 提供了两个函数:

iex> div(10, 5)
2
iex> rem(10, 3)
1

布尔运算

Elixir 提供了 ||&&! 布尔操作符,它们支持任何类型的操作:

iex> -20 || true
-20
iex> false || 42
42

iex> 42 && true
true
iex> 42 && nil
nil

iex> !42
false
iex> !false
true

还有三个操作符(andornot),它们的第一个参数必须是布尔类型(truefalse):

iex> true and 42
42
iex> false or true
true
iex> not false
true
iex> 42 and true
** (ArgumentError) argument error: 42
iex> not 42
** (ArgumentError) argument error

比较

字符串插值

如果你使用过 Ruby,那么 Elixir 的字符串插值看起来会很熟悉:

iex> name = "Sean"
iex> "Hello #{name}"
"Hello Sean"

字符串拼接

使用 <> 操作符进行字符串拼接:

iex> name = "Sean"
iex> "Hello " <> name
"Hello Sean"

分享本页面