Biến hằng số
Tuy điều này có vẻ nghịch lý, hầu hết các ngôn ngữ lập trình đều hỗ trợ khái niệm biến hằng số. Trong MQL5, chúng được mô tả bằng cách thêm từ sửa đổi const
. Nó được đặt trong mô tả biến, trước kiểu của nó và có nghĩa là giá trị biến không thể thay đổi theo bất kỳ cách nào khi được khởi tạo bởi giá trị ban đầu. Trong toàn bộ vòng đời của nó, biến sẽ có cùng một giá trị, tức là một hằng số.
Trình biên dịch sẽ chỉ ngăn việc gán giá trị cho hằng số: Lỗi "constant cannot be modified-hằng số không thể sửa đổi" sẽ xuất hiện trong chuỗi có liên quan.
Trình sửa đổi const
nhằm mục đích thể hiện rõ ràng ý định của lập trình viên là không thay đổi biến có liên quan, nếu là một giá trị cố định thường được biết đến, chẳng hạn như chỉ số EUR để tính chỉ số USD, số tuần trong một năm, v.v. Nên luôn sử dụng trình sửa đổi const
nếu bạn không định thay đổi biến. Điều này giúp tránh các lỗi tiềm ẩn sau này, nếu chính lập trình viên hoặc một ai đó trong số các đồng nghiệp của họ vô tình cố gắng viết một cái gì đó khác vào hằng số.
Ví dụ, chúng ta có thể thêm trình sửa đổi const
cho mảng messages
trong hàm Greeting
. Điều này có vẻ không hữu ích cho một chương trình nhỏ như vậy. Tuy nhiên, vì các chương trình có xu hướng phát triển, bất kỳ chuỗi nào sớm muộn gì cũng "tự tìm thấy" trong một môi trường phần mềm phức tạp hơn nhiều, chẳng hạn như các câu lệnh được thêm vào, chế độ hoạt động, v.v. Do đó, có một kế hoạch B là hợp lý; đặc biệt là khi nó quá đơn giản.
string Greeting()
{
static int counter = 0;
static const string messages[3] =
{
"Good morning", "Good day", "Good evening"
};
// error demo: 'messages' - constant cannot be modified
// messages[0] = "Good night";
return messages[counter++ % 3];
}
2
3
4
5
6
7
8
9
10
11
Trong chuỗi được chú thích, chúng ta thử ghi chuỗi "Good night" vào phần tử đầu tiên của mảng (hãy nhớ rằng việc đánh số bắt đầu từ 0). Trong trường hợp này, ý nghĩa của hành động này chỉ là để đảm bảo trình biên dịch ngăn không cho thực hiện việc đó.
Như dễ thấy, các bộ điều chỉnh static
và const
có thể được kết hợp. Thứ tự ghi lại chúng không quan trọng.
Nhân tiện, trong MQL5, các biến trở thành hằng số khi sử dụng từ khóa const
và khi khai báo chúng bằng các biến đầu vào của chương trình.