iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 13
1
Modern Web

用Elixir學習後端煉金術系列 第 13

Day 13 |> 流程控制 (Control Flow)

  • 分享至 

  • xImage
  •  

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來做為模式比對的一個識別,這種慣例或是規範增加了社群工具的一致性。


上一篇
Day 12 |> 模組 (Modules) 與結構 (Structs)
下一篇
Day 14 |> 常用模組函式介紹
系列文
用Elixir學習後端煉金術30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言