Elixir note
Module
-
Bắt đầu bằng chữ in hoa và dạng CamelCase
-
Chứa các function, các function phải viết trong một module.
-
Có thể viết dạng
Module.Part.One
. Chỉ là syntactic sugar.
defmodule Bot.Chat do
def hello do
IO.puts "Hi there"
end
end
Bot.Chat.hello()
Function
-
Phải viết trong một module
-
Giá trị return là dòng cuối, không giống như Python phải
return something
-
Tên function viết thường, vi_du_nhu_the_nay
-
?
trả về true hoặc false,!
ám chỉ function có thể raise runtime error -
def
vàdefmodule
là các macro, ko phải keyword
defmodule MyTool.Math do
def sum(a, b) do
a + b
end
def multiply(a, b), do: a * b
def sub(a, b \\ 0) do
a - b
end
end
- Dùng
|>
(pipeline), kết quả trả về được đưa vào args đầu tiên của function đằng sau
prev() |> next(arg1, arg2) == next(prev(), arg1, arg2)
- Arity là số args của một function. Rất quan trọng vì trong một module có thể def nhiều function tên giống nhau nhưng khác về args nhận vào.
defmodule Foo do
def add(a) do
a
end
def add(a, b) do
a + b
end
end
# Ở đây ta có 2 func: Foo.add …