W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
變量在Elixir中可以被重新賦值:
iex> x = 1
1
iex> x = 2
2
當(dāng)你想要對變量值進行模式匹配,而不是重新賦值時,就可以使用標(biāo)記操作符:?^
?
iex> x = 1
1
iex> ^x = 2
** (MatchError) no match of right hand side value: 2
iex> {y, ^x} = {2, 1}
{2, 1}
iex> y
2
iex> {y, ^x} = {2, 2}
** (MatchError) no match of right hand side value: {2, 2}
由于我們已經(jīng)將1賦值給變量x,最后一個例子也可以寫成:
iex> {y, 1} = {2, 2}
** (MatchError) no match of right hand side value: {2, 2}
在某些情況下,你并不關(guān)心模式中特定的值。可以使用下劃線將那些值捆綁起來。例如,如果我們只看重列表頭,那么可以將尾賦值給下劃線:?_
?
iex> [h | _] = [1, 2, 3]
[1, 2, 3]
iex> h
1
變量的特別之處在于它永遠不可以被讀取。試圖讀取它時會返回一個未指定變量的錯誤:?_
?
iex> _
** (CompileError) iex:1: unbound variable _
盡管模式匹配使我們能夠創(chuàng)建強大的結(jié)構(gòu)體,它的用途依舊有限。例如,你不能夠在匹配的左邊調(diào)用函數(shù):
iex> length([1, [2], 3]) = 3
** (CompileError) iex:1: illegal pattern
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: