Elixir 基本操作符

2023-12-14 16:27 更新

在上一個章節(jié),我們看到Elixir提供了,,,算數(shù)操作符,還有函數(shù)和用于獲得整數(shù)形式的商和余數(shù)。?+??-??*??/??div/2??rem/2?

Elixir也提供了對列表的和操作:?++??--?

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

字符串連接符是:?<>?

iex> "foo" <> "bar"
"foobar"

Elixir也提供了三個布爾操作符:,和。這些操作符要求以布爾類型作為其弟一個參數(shù):?or??and??not?

iex> true and true
true
iex> false or is_atom(:example)
true

若第一個參數(shù)不是布爾類型則會拋出異常:

iex> 1 and true
** (ArgumentError) argument error: 1

or和是短路運算符。它們在左邊不足夠確定結(jié)果時才會執(zhí)行右邊:?and?

iex> false and raise("This error will never be raised")
false

iex> true or raise("This error will never be raised")
true
注意:如果你是一名Erlang開發(fā)者,Elixir中的和對應(yīng)著Erlang中的和運算符。?and??or??andalso??orelse?

除此之外,Elixir也提供,和操作符,它們接受任何形式的參數(shù)。在這些操作符中,除了和之外的值都會被認定為真:?||??&&??!??false??nil?

# 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

推薦的做法是,當你期望布爾型時使用,和。如果參數(shù)不是布爾型,那么使用,和。?and??or??not??||??&&??!?

Elixir也提供了,,,,,,和作為比較運算符:?==??!=??===??!==??<=??>=??<??>?

iex> 1 == 1
true
iex> 1 != 2
true
iex> 1 < 2
true

?==?與的區(qū)別在于后者對于整數(shù)和浮點數(shù)的比較更加嚴格:?===?

iex> 1 == 1.0
true
iex> 1 === 1.0
false

在Elixir中,我們可以比較不同的數(shù)據(jù)類型:

iex> 1 < :atom
true

這是處于實用角度考慮。排序算法不用再擔(dān)心不同的數(shù)據(jù)類型。排序定義如下:

number < atom < reference < functions < port < pid < tuple < maps < list < bitstring

你不必記住這個順序,但需要知道它的存在。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號