Nơi duy nhất tôi nhớ lại bằng cú pháp đó là COBOL, cách đây khoảng 25 năm.
Tôi nghi ngờ lý do nó không được hỗ trợ rộng rãi là vì nó dẫn đến sự mơ hồ mà trình biên dịch không thể giải quyết. Trong trường hợp cụ thể của bạn, nó không phải là một vấn đề cụ thể bởi vì "điều này" và "đó" là các chuỗi, mà toán tử OR có điều kiện không có ý nghĩa. Nhưng xem xét đoạn này, bằng một ngôn ngữ như C, nơi mà các kết quả của một điều kiện là một giá trị Boolean 0 hoặc 1:
int a = 22;
int b = 99;
int rslt = SomeFunction();
if (rslt == (a || b))
Tại thời điểm này trình biên dịch không thể đáng tin cậy xác định những gì bạn muốn. Bạn có ý định này:
if (rslt == a || rslt == b)
hoặc, bạn đã có ý định:
if ((rslt == 0 && a == 0 && b == 0) || (rslt == 1 && a == 1 && b == 1))
Bạn có thể hạn chế các loại mà cú pháp như vậy có thể được sử dụng, nhưng sau đó bạn đang chồng chất ngoại lệ trên đầu trang của những gì lý tưởng phải là một cú pháp trực giao. Điều đó sẽ gây nhầm lẫn cho người dùng và làm phức tạp trình biên dịch.
Nó cũng buộc các biểu thức được đánh giá khác nhau trong điều kiện hơn trong các câu lệnh gán. Điều đó, quá, chắc chắn sẽ làm phức tạp trình biên dịch.
Nó chắc chắn có thể được thực hiện để làm việc, nhưng tôi nghĩ rằng nó sẽ yêu cầu cú pháp mới với các biểu tượng quá tải, và tất cả cho một lợi ích có vấn đề.
Nguồn
2009-03-14 04:43:44
bạn * có thể * viết rằng trong c hoặc C++ .. nó chỉ không làm những gì bạn muốn nó quá;). –