在 Elixir 裡面其實寫死的語法很少,大部分都是呼叫函式
當我們在定義函式時
def hello do
"world"
end
這個可以寫成
def(hello, do: "world")
模組定義其實也是函式
把剛剛的定義函式包在定義模組會變成
defmodule(Hello, do: def(hello, do: "World"))
等同於平常寫的
defmodule Hello do
def hello do
"World"
end
end
之前也有提到,如果有多個結構簡單的同名函式
我們會用 keyworld list 的 do: ...
來代替 do end
def hello("Jack"), do: "Hi Jack"
def hello("Nick"), do: "Go away"
def hello(_), do: "Hello"
這個時候將 do end 還原成 do:
來寫,程式碼變得比較好讀
我們常用的 if 也是有這個結構
if user.admin? do
"歡迎"
else
"你沒權限"
end
可以寫成
if(user.admin?, do: "歡迎", else: "你沒權限")
題外話,Elixir 沒有三元運算子
雖然長了點,但是這種寫法的 if 可以取代