Elixir基础笔记(二)—— 基本操作符

上一篇文章中,已经介绍过了+-*/四种算术运算符,以及div/2rem/2两个计算整除和取余的方法。在这篇文章中为大家介绍一些其他操作方法。

++和–

Elixir中提供了++--操作符来操控列表

1
2
3
4
iex> [1, 2, 3] ++ [4, 5, 6]
[1, 2, 3, 4, 5, 6]
iex> [1, 2, 3] -- [2]
[1, 3]

<>

Elixir还提供了<>用来连接两个字符串

1
2
iex> "foo" <> "bar"
"foobar"

or,and,not

和其他语言一样Elixir同样提供了三个布尔值操作符orandnot

1
2
3
4
iex> true and true
true
iex> false or is_atom(:example)
true

需要注意的是如果传入非布尔值的就会报错。

1
2
iex> 1 and true
** (BadBooleanError) expected a boolean on left-side of "and", got: 1

orand属于短路操作符,即只有左边的无法确定结果的时候才会去计算右边。

1
2
3
4
iex> false and raise("This error will never be raised")
false
iex> true or raise("This error will never be raised")
true

除了这三个之外,Elixir还提供了&&||!可以接受任何数据类型的操作符。在这些操作符中,除了falsenil之外都会当作真值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# or
iex> 1 || true
1
iex> false || 11
11

# and
iex> nil && 13
nil
iex> true && 17
17

# !
iex> !true
false
iex> !1
false
iex> !nil
true

比较操作符

Elixir也提供了==!====<=>=<>比较操作符。

1
2
3
4
5
6
iex> 1 == 1
true
iex> 1 != 2
true
iex> 1 < 2
true

=====的区别在于比较整数和浮点数时后者更严格

1
2
3
4
iex> 1 == 1.0
true
iex> 1 === 1.0
false

在Elixir中任何类型都可以比较

1
2
iex> 1 < :atom
true
1
number < atom < reference < function < port < pid < tuple < map < list < bitstring