Cấu trúc này được gọi là Toán tử Ternary trong các kỹ thuật lập trình và khoa học máy tính.
Và Wikipedia gợi ý giải thích sau:
Trong khoa học máy tính, một toán tử ternary (đôi khi được gọi không chính xác là toán tử bậc ba) là một toán tử có ba đối số. Các đối số và kết quả có thể có các loại khác nhau. Nhiều ngôn ngữ lập trình sử dụng cú pháp giống như C có một toán tử ternary,?:, Định nghĩa một biểu thức điều kiện.
Không chỉ trong Java, cú pháp này cũng có sẵn trong PHP, Objective-C.
Trong liên kết sau đây, nó đưa ra lời giải thích sau, rất tốt để hiểu nó:
Một toán tử ternary là một số hoạt động hoạt động trên 3 đầu vào. Đó là một lối tắt cho một câu lệnh if-other và còn được gọi là toán tử có điều kiện.
Trong Perl / PHP, nó hoạt động như:
boolean_condition ? true_value : false_value
Trong C / C ++, nó hoạt động như:
logical expression ? action for true : action for false
Điều này có thể dễ đọc đối với một số điều kiện logic không quá phức tạp nếu không sử dụng khối If-Else tốt hơn với sự kết hợp dự định của logic điều kiện.
Chúng ta có thể đơn giản hóa các khối If-Else với toán tử Ternary này cho một dòng lệnh mã.
Ví dụ:
if ( car.isStarted() ) {
car.goForward();
} else {
car.startTheEngine();
}
Có thể bằng như sau:
( car.isStarted() ) ? car.goForward() : car.startTheEngine();
Vì vậy, nếu chúng tôi đề cập đến tuyên bố của bạn:
int count = isHere ? getHereCount(index) : getAwayCount(index);
Nó thực sự tương đương 100% với khối If-Else sau:
int count;
if (isHere) {
count = getHereCount(index);
} else {
count = getAwayCount(index);
}
Đó là nó!
Hy vọng điều này hữu ích cho ai đó!
Chúc mừng!