Elixir - Thư viện
Elixir cung cấp khả năng tương tác tuyệt vời với các thư viện Erlang. Hãy để chúng tôi thảo luận ngắn gọn về một vài thư viện.
Mô-đun nhị phân
Mô-đun Chuỗi Elixir tích hợp xử lý các tệp nhị phân được mã hóa UTF-8. Mô-đun nhị phân hữu ích khi bạn xử lý dữ liệu nhị phân không nhất thiết phải được mã hóa UTF-8. Chúng ta hãy xem xét một ví dụ để hiểu thêm về mô-đun Binary -
# UTF-8
IO.puts(String.to_char_list("Ø"))
# binary
IO.puts(:binary.bin_to_list "Ø")
Khi chương trình trên được chạy, nó tạo ra kết quả sau:
[216]
[195, 152]
Ví dụ trên cho thấy sự khác biệt; mô-đun Chuỗi trả về điểm mã UTF-8, trong khi: nhị phân xử lý các byte dữ liệu thô.
Mô-đun tiền điện tử
Mô-đun tiền điện tử chứa các hàm băm, chữ ký số, mã hóa và hơn thế nữa. Mô-đun này không phải là một phần của thư viện chuẩn Erlang, nhưng được bao gồm trong bản phân phối Erlang. Điều này có nghĩa là bạn phải liệt kê: crypto trong danh sách ứng dụng của dự án bất cứ khi nào bạn sử dụng. Hãy để chúng tôi xem một ví dụ sử dụng mô-đun tiền điện tử -
IO.puts(Base.encode16(:crypto.hash(:sha256, "Elixir")))
Khi chương trình trên được chạy, nó tạo ra kết quả sau:
3315715A7A3AD57428298676C5AE465DADA38D951BDFAC9348A8A31E9C7401CB
Mô-đun Digraph
Mô-đun đồ thị chứa các hàm để xử lý các đồ thị có hướng được xây dựng bằng các đỉnh và cạnh. Sau khi xây dựng đồ thị, các thuật toán trong đó sẽ giúp tìm, ví dụ, đường đi ngắn nhất giữa hai đỉnh hoặc các vòng lặp trong đồ thị. Lưu ý rằng các chức năngin :digraph thay đổi cấu trúc đồ thị một cách gián tiếp như một hiệu ứng phụ, trong khi trả về các đỉnh hoặc cạnh đã thêm.
digraph = :digraph.new()
coords = [{0.0, 0.0}, {1.0, 0.0}, {1.0, 1.0}]
[v0, v1, v2] = (for c <- coords, do: :digraph.add_vertex(digraph, c))
:digraph.add_edge(digraph, v0, v1)
:digraph.add_edge(digraph, v1, v2)
for point <- :digraph.get_short_path(digraph, v0, v2) do
{x, y} = point
IO.puts("#{x}, #{y}")
end
Khi chương trình trên được chạy, nó tạo ra kết quả sau:
0.0, 0.0
1.0, 0.0
1.0, 1.0
Mô-đun Toán học
Mô-đun toán học chứa các phép toán phổ biến bao gồm các hàm lượng giác, hàm số mũ và lôgarit. Chúng ta hãy xem xét ví dụ sau để hiểu cách hoạt động của mô-đun Toán học -
# Value of pi
IO.puts(:math.pi())
# Logarithm
IO.puts(:math.log(7.694785265142018e23))
# Exponentiation
IO.puts(:math.exp(55.0))
#...
Khi chương trình trên được chạy, nó tạo ra kết quả sau:
3.141592653589793
55.0
7.694785265142018e23
Mô-đun hàng đợi
Hàng đợi là một cấu trúc dữ liệu thực hiện các hàng đợi FIFO (kết thúc kép) (nhập trước xuất trước) một cách hiệu quả. Ví dụ sau đây cho thấy cách hoạt động của mô-đun Hàng đợi:
q = :queue.new
q = :queue.in("A", q)
q = :queue.in("B", q)
{{:value, val}, q} = :queue.out(q)
IO.puts(val)
{{:value, val}, q} = :queue.out(q)
IO.puts(val)
Khi chương trình trên được chạy, nó tạo ra kết quả sau:
A
B