W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Elixir默認(rèn)在衛(wèi)語句中可以使用以下表達(dá)式:
- 比較運(yùn)算符(==,!=,===,!==,>,>=,<,<=)
- 布爾運(yùn)算符(and,or,not)
- 數(shù)學(xué)運(yùn)算符(+,-,*,/)
- 一元運(yùn)算符(+,-)
- 二進(jìn)制連接符`<>`
- 當(dāng)右邊是一個(gè)范圍或列表時(shí),使用`in`操作符
- 下列的所有類型檢查函數(shù):
is_atom/1
is_binary/1
is_bitstring/1
is_boolean/1
is_float/1
is_function/1
is_function/2
is_integer/1
is_list/1
is_map/1
is_nil/1
is_number/1
is_pid/1
is_port/1
is_reference/1
is_tuple/1
- 加上這些函數(shù)
abs(number)
binary_part(binary, start, length)
bit_size(bitstring)
byte_size(bitstring)
div(integer, integer)
elem(tuple, n)
hd(list)
length(list)
map_size(map)
node()
node(pid | ref | port)
rem(integer, integer)
round(number)
self()
tl(list)
trunc(number)
tuple_size(tuple)
此外,用戶可以定義自己的衛(wèi)語句。例如,模塊使用函數(shù)和操作符來定義衛(wèi)語句:Bitwise
bnot, ~~~, band, &&&, bor, |||, bxor, ^^^, bsl, <<<, bsr, >>>
注意,盡管例如,,的布爾操作符允許在衛(wèi)語句中使用,但更常用的短路操作符,和卻不被允許。and
or
not
&&
||
!
記住,衛(wèi)語句中的錯(cuò)誤不會(huì)泄露,只是簡單地讓衛(wèi)語句失?。?/p>
iex> hd(1)
** (ArgumentError) argument error
:erlang.hd(1)
iex> case 1 do
...> x when hd(x) -> "Won't match"
...> x -> "Got: #{x}"
...> end
"Got 1"
如果沒有語句匹配到,會(huì)拋出一個(gè)錯(cuò)誤:
iex> case :ok do
...> :error -> "Won't match"
...> end
** (CaseClauseError) no case clause matching: :ok
注意匿名函數(shù)也可以擁有多個(gè)衛(wèi)語句:
iex> f = fn
...> x, y when x > 0 -> x + y
...> x, y -> x * y
...> end
#Function<12.71889879/2 in :erl_eval.expr/5>
iex> f.(1, 3)
4
iex> f.(-1, 3)
-3
匿名函數(shù)的分語句中參數(shù)的數(shù)量應(yīng)當(dāng)相同,否則會(huì)拋出錯(cuò)誤。
iex> f2 = fn
...> x, y when x > 0 -> x + y
...> x, y, z -> x * y + z
...> end
** (CompileError) iex:1: cannot mix clauses with different arities in function definition
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: