«عملگر سهتایی» را میتوان نسخهی فشردهی if-else در نظر گرفت. این عملگر معمولاً در دستورهای return به کار میرود (البته محدود به آنها نیست) و فقط به یک خط نیاز دارد تا تصمیم بگیرد: اگر عبارت true باشد مقدار سمت چپ و اگر false باشد مقدار سمت راست را برمیگرداند.
بسیاری از عبارتهای سادهی if/else را میتوان با عملگر سهتایی سادهتر کرد.
// this ternary statement
return 5 > 4 ? true : false;
// is equivalent to this if/else
if ( 5 > 4 ) {
return true;
} else {
return false;
}
حالا چطور بین if-else و عملگر سهتایی تصمیم بگیریم؟ خب، عملگرهای سهتایی در موقعیتهای ساده به کار میروند، جایی که فقط باید بر اساس یک شرط مقداری را برگردانید و محاسبهی اضافهای لازم نیست. در بقیهی موارد، مثل شرطهای تودرتو، عبارتهای بزرگ و زمانی که برای تعیین مقدار بازگشتی به بیش از یک خط نیاز دارید، از if-else استفاده کنید.
هرچند میتوانید عملگرهای سهتایی را تودرتو کنید، اما کد اغلب ناخوانا میشود. در چنین مواردی، ifهای تودرتو ترجیح داده میشوند.
// hard to read
int value = expr1 ? expr2 && expr3 ? val1 : (val2 + val3) : expr4;
// easier to read
if (expr1){
if (expr2 && expr3){
return val1;
}
return val2 + val3;
}
return val4;
عملگرهای سهتایی و دستورهای if/else مثال خوبی برای این هستند که در برنامهنویسی راههای مختلفی برای رسیدن به یک نتیجهی یکسان وجود دارد.