Elixir - Loại dữ liệu

Để sử dụng bất kỳ ngôn ngữ nào, bạn cần hiểu các kiểu dữ liệu cơ bản mà ngôn ngữ đó hỗ trợ. Trong chương này, chúng ta sẽ thảo luận về 7 kiểu dữ liệu cơ bản được hỗ trợ bởi ngôn ngữ elixir: số nguyên, phao, Boolean, nguyên tử, chuỗi, danh sách và bộ giá trị.

Kiểu số

Elixir, giống như bất kỳ ngôn ngữ lập trình nào khác, hỗ trợ cả số nguyên và số float. Nếu bạn mở elixir shell và nhập bất kỳ số nguyên hoặc float nào làm đầu vào, nó sẽ trả về giá trị của nó. Ví dụ,

42

Khi chương trình trên được chạy, nó tạo ra kết quả sau:

42

Bạn cũng có thể xác định số trong cơ sở bát phân, hex và nhị phân.

Bát phân

Để xác định một số trong cơ số bát phân, hãy đặt tiền tố bằng '0o'. Ví dụ: 0o52 trong bát phân tương đương với 42 trong thập phân.

Hệ thập lục phân

Để xác định một số trong cơ số thập phân, hãy đặt tiền tố bằng '0x'. Ví dụ: 0xF1 trong hệ thập lục phân tương đương với 241 trong hệ thập phân.

Nhị phân

Để xác định một số trong cơ sở nhị phân, hãy đặt tiền tố nó bằng '0b'. Ví dụ: 0b1101 trong hệ nhị phân tương đương với 13 trong hệ thập phân.

Elixir hỗ trợ độ chính xác kép 64 bit cho các số dấu phẩy động. Và chúng cũng có thể được xác định bằng cách sử dụng kiểu lũy thừa. Ví dụ: 10145230000 có thể được viết là 1,014523e10

Nguyên tử

Nguyên tử là hằng số có tên là giá trị của chúng. Chúng có thể được tạo bằng cách sử dụng ký hiệu màu (:). Ví dụ,

:hello

Booleans

Elixir hỗ trợ truefalsenhư Booleans. Trên thực tế, cả hai giá trị này đều được gắn với các nguyên tử: true và: false tương ứng.

Dây

Các chuỗi trong Elixir được chèn vào giữa các dấu ngoặc kép và chúng được mã hóa bằng UTF-8. Chúng có thể kéo dài nhiều dòng và chứa các phép nội suy. Để xác định một chuỗi, chỉ cần nhập nó trong dấu ngoặc kép:

"Hello world"

Để xác định chuỗi nhiều dòng, chúng tôi sử dụng cú pháp tương tự như python với ba dấu ngoặc kép -

"""
Hello
World!
"""

Chúng ta sẽ tìm hiểu sâu về chuỗi, mã nhị phân và danh sách char (tương tự như chuỗi) trong chương chuỗi.

Binaries

Dấu phân cách là chuỗi các byte được bao trong dấu << >> được phân tách bằng dấu phẩy. Ví dụ,

<< 65, 68, 75>>

Binaries chủ yếu được sử dụng để xử lý dữ liệu liên quan đến bit và byte, nếu bạn có. Theo mặc định, chúng có thể lưu trữ 0 đến 255 trong mỗi giá trị. Giới hạn kích thước này có thể được tăng lên bằng cách sử dụng hàm kích thước cho biết cần có bao nhiêu bit để lưu trữ giá trị đó. Ví dụ,

<<65, 255, 289::size(15)>>

Danh sách

Elixir sử dụng dấu ngoặc vuông để chỉ định danh sách các giá trị. Giá trị có thể thuộc bất kỳ loại nào. Ví dụ,

[1, "Hello", :an_atom, true]

Danh sách đi kèm với các hàm có sẵn cho phần đầu và phần đuôi của danh sách có tên hd và tl, các hàm này trả về phần đầu và phần đuôi của danh sách tương ứng. Đôi khi khi bạn tạo một danh sách, nó sẽ trả về một danh sách char. Điều này là do khi elixir nhìn thấy danh sách các ký tự ASCII có thể in được, nó sẽ in nó dưới dạng danh sách char. Xin lưu ý rằng chuỗi và danh sách char không bằng nhau. Chúng ta sẽ thảo luận thêm về danh sách trong các chương sau.

Tuples

Elixir sử dụng dấu ngoặc nhọn để xác định các bộ giá trị. Giống như danh sách, bộ giá trị có thể giữ bất kỳ giá trị nào.

{ 1, "Hello", :an_atom, true

Một câu hỏi đặt ra ở đây, - tại sao lại cung cấp cả hai liststupleskhi cả hai đều hoạt động theo cùng một cách? Họ có các cách triển khai khác nhau.

  • Danh sách thực sự được lưu trữ dưới dạng danh sách liên kết, vì vậy việc chèn, xóa rất nhanh trong danh sách.

  • Mặt khác, các bộ dữ liệu được lưu trữ trong khối bộ nhớ liền kề, giúp truy cập chúng nhanh hơn nhưng lại làm tăng thêm chi phí cho việc chèn và xóa.