Câu lệnh rỗng
Câu lệnh rỗng là câu lệnh đơn giản nhất trong ngôn ngữ. Nó chỉ bao gồm một ký tự, dấu chấm phẩy ';'.
Câu lệnh rỗng được sử dụng trong chương trình ở những nơi mà cú pháp yêu cầu sự hiện diện của một câu lệnh, nhưng logic của thuật toán chỉ thị không làm gì cả.
Ví dụ, vòng lặp while
sau được sử dụng để tìm một khoảng trắng trong chuỗi. Toàn bộ bản chất của thuật toán được thực hiện trực tiếp trong tiêu đề vòng lặp, vì vậy phần thân của nó phải rỗng. Chúng ta có thể viết một khối dấu ngoặc nhọn rỗng, nhưng một câu lệnh rỗng cũng hoạt động ở đây (StmtNull.mq5
).
int i = 0;
ushort c;
string s = "Hello, " + Symbol();
while((c = s[i++]) != ` ` && c != 0); // cố ý có ';' (!)
if(c == ` `)
{
Print("Space found at: ", i);
}
2
3
4
5
6
7
8
Lưu ý rằng nếu dấu chấm phẩy ở cuối tiêu đề while
bị bỏ qua (có thể do nhầm lẫn), thì câu lệnh if
sẽ được coi là phần thân của vòng lặp. Kết quả là, sẽ không có đầu ra nào vào nhật ký bởi hàm Print
. Thực tế, chương trình sẽ không hoạt động đúng, mặc dù không có lỗi rõ ràng.
Tình huống ngược lại cũng có thể xảy ra: một dấu chấm phẩy thừa sau tiêu đề vòng lặp (nơi không nên có) sẽ "tách" phần thân vòng lặp khỏi tiêu đề, tức là chỉ một câu lệnh rỗng sẽ được thực thi trong vòng lặp.
Về vấn đề này, các dấu chấm phẩy tùy chọn nên được kiểm tra trong mã, và bất cứ nơi nào chúng được đặt cố ý, hãy để lại một bình luận với lời giải thích.
Nhân tiện, từ quan điểm hình thức, câu lệnh rỗng cũng được sử dụng trong câu lệnh for
khi chúng ta bỏ qua biểu thức khởi tạo. Thực tế, luôn có khởi tạo:
for ( [initialization] ; [end loop condition]; [post-expression] )
loop body
2
Ký tự ';' đầu tiên là một phần của câu lệnh khởi tạo, có thể là một biểu thức hoặc một câu lệnh rỗng: cả hai đều chứa ký tự ';' ở cuối, với câu lệnh rỗng không chứa gì ngoài ';'. Do đó, tính tùy chọn (rỗng) được đạt được.