Enumerations (Liệt kê)
Dữ liệu thuộc kiểu enum
thuộc về một tập dữ liệu giới hạn nhất định. Xác định kiểu liệt kê:
cpp
enum name of enumerable type
{
list of values
};
Danh sách các giá trị là danh sách các mã định danh của các hằng số được đặt tên được phân tách bằng dấu phẩy.
VD:
cpp
enum months // liệt kê các hằng số được đặt tên
{
January,
February,
March,
April,
May,
June,
July,
August,
September,
October,
November,
December
};
Sau khi phép liệt kê được khai báo, một kiểu dữ liệu 4 byte có giá trị nguyên mới sẽ xuất hiện. Việc khai báo kiểu dữ liệu mới cho phép trình biên dịch kiểm soát chặt chẽ các kiểu tham số được truyền, bởi vì phép liệt kê đưa ra các hằng số được đặt tên mới. Trong ví dụ trên, hằng số được đặt tên tháng 1 có giá trị 0, tháng 2 - 1, tháng 12 - 11.
Quy tắc:
- Nếu một giá trị nhất định không được gán cho hằng số được đặt tên là thành viên của bảng liệt kê, giá trị mới của nó sẽ được hình thành tự động.
- Nếu nó là thành viên đầu tiên của bảng liệt kê, giá trị 0 sẽ được gán cho nó. Đối với tất cả các thành viên tiếp theo, giá trị sẽ được tính dựa trên giá trị của các thành viên trước đó bằng cách thêm một.
VD:
cpp
enum intervals // Liệt kê các hằng số được đặt tên
{
month=1, // Khoảng thời gian một tháng
two_months, // Hai tháng
quarter, // Ba tháng - quý
halfyear=6, // Nửa năm
year=12, // Năm - 12 tháng
};
Lưu ý:
- Không giống C++, kích thước biểu diễn bên trong của kiểu liệt kê trong MQL5 luôn bằng 4 byte. Nghĩa là,
sizeof(month)
trả về giá trị 4.- Không giống C++, bảng liệt kê ẩn danh không thể được khai báo trong MQL5. Nghĩa là, một tên duy nhất phải luôn được chỉ định sau từ khóa
enum
.