if/unless
在Elixir中也有if的語法,用法為:
iex> age = 20
iex> if age == 18, do: "you are so young", else: "bye"
"bye"
並且提供了如下的語法糖:
iex> age = 20
iex> if age == 18 do
"you are so young"
else
"bye"
end
"bye"
而unless跟if用法相同,只是條件上是相反的,只有在不成立時會進if。
cond
cond是另一種條件控制的語法,在多種判斷時,寫法比if更簡潔。
cond do
age > 20 ->
"你是成年"
age > 10 and age <= 20 ->
"你是青年"
age > 5 and age <= 10 ->
"你屁孩"
true ->
"你小屁孩"
end
比起以上兩種判斷語法,Programming Elixir的作者 Dava Thomas 最推薦的是以下這個語法。
case
得益於模式比較的好處,我們可以同時做到比較以及賦值,而case正是發揮模式比較優點的語法!
case person do
"jack" -> "Im jack"
"andy" -> "Im andy"
_ -> "Who am I"
end
或是以檔案讀取的例子為例:
case File.open(file_name) do
{:ok, file} ->
process(file)
{:error, error} ->
IO.puts error
end
以上這個用例的回傳在elixir的內建函式以及社群中,都有類似的回傳,都是以tuple作為回傳,以atom來做為模式比對的一個識別,這種慣例或是規範增加了社群工具的一致性。