W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
目前,我們已經(jīng)學(xué)習(xí)了四種控制結(jié)構(gòu):,,和,它們都包含了塊。所以我們也能夠以如下方式寫(xiě)語(yǔ)句:
case
cond
if
unless
do/end
if
iex> if true, do: 1 + 2
3
注意在和之間有一個(gè)逗號(hào),這是因?yàn)镋lixir中參數(shù)之間要以逗號(hào)隔開(kāi)。我們稱這種格式為關(guān)鍵字列表。我們也可以用關(guān)鍵字來(lái)傳遞:true
do:
else
iex> if false, do: :this, else: :that
:that
do/end
塊形式是在關(guān)鍵字形式的語(yǔ)法上經(jīng)過(guò)化簡(jiǎn)所得的。這就是為什么塊形式不要求參數(shù)與塊之間用逗號(hào)隔開(kāi)。它消除了在書(shū)寫(xiě)塊代碼時(shí)的冗余信息。下列兩種語(yǔ)法作用是相同的:do/end
iex> if true do
...> a = 1 + 2
...> a + 10
...> end
13
iex> if true, do: (
...> a = 1 + 2
...> a + 10
...> )
13
需要記住的是在使用塊時(shí),它們總是和最外層的函數(shù)調(diào)用捆綁在一起。例如:do/end
iex> is_number if true do
...> 1 + 2
...> end
** (CompileError) undefined function: is_number/2
會(huì)被解釋成:
iex> is_number(if true) do
...> 1 + 2
...> end
** (CompileError) undefined function: is_number/2
產(chǎn)生錯(cuò)誤的原因是Elixir試圖調(diào)用函數(shù),卻得到了兩個(gè)參數(shù)(表達(dá)式也會(huì)產(chǎn)生錯(cuò)誤,因?yàn)樾枰牡诙€(gè)參數(shù),也就是塊)。添加明確的括號(hào)能夠消除歧義:is_number/1
if true
if
do/end
iex> is_number(if true do
...> 1 + 2
...> end)
true
關(guān)鍵字列表在語(yǔ)言中扮演著重要的角色,在許多函數(shù)與宏中都很常見(jiàn)。在之后的章節(jié)中我們會(huì)繼續(xù)他;探索它?,F(xiàn)在,讓我們談?wù)?二進(jìn)制,字符串和字符列表"。
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)系方式:
更多建議: