Java Developer | digipay
Ternary Operator in Java
چرا عملگرهای سه گانه (Ternary Operator) در جاوا توابع void را قبول نمیکنند؟

در این مقاله فرض میکنیم که شما اطلاعات حدودی از Java Collections دارید.
این سلسله مقالات که برای تکمیل مقاله Java Collections - Everything You MUST Know نوشته شده برای بهبود و درک بهتر collectionها و مواردی که به طور روزمره دارید استفاده میکنید نوشته شده لطفا تمام این دسته بندی رو برای درک بهتر مطالعه کنید .
StringBuilder vs StringBuffer vs String
عملگرهای سه گانه در جاوا یک ساختار دستوری فشرده برای بیان عبارات شرطی هستند. آنها به این صورت عمل میکنند که یک شرط را بررسی کرده و بر اساس نتیجه آن، یکی از دو مقدار را برمیگردانند.
دلیل اصلی اینکه عملگرهای سه گانه توابع void را قبول نمیکنند، ماهیت بازگرداندن مقدار است.
- ماهیت عملگرهای سه گانه: عملگرهای سه گانه به طور ذاتی برای بازگرداندن یک مقدار طراحی شدهاند. این مقدار میتواند از هر نوع دادهای باشد، به جز انواع void.
- توابع void: توابع void هیچ مقداری را برنمیگردانند. آنها صرفاً یک سری عملیات را انجام میدهند و سپس خاتمه مییابند.
int x = 10;
int y = 20;
int max = (x > y) ? x : y; // عملگر سه گانه برای پیدا کردن مقدار بزرگتردر مثال بالا، عملگر سه گانه مقدار بزرگتر بین x و y را محاسبه کرده و آن را به متغیر max اختصاص میدهد.
چرا این محدودیت وجود دارد؟
- سادگی و خوانایی: اگر عملگرهای سه گانه اجازه میدادند که توابع void را فراخوانی کنند، ساختار دستوری پیچیدهتر و کمتر خوانا میشد.
- تضمین بازگرداندن مقدار: با این محدودیت، اطمینان حاصل میشود که عملگرهای سه گانه همیشه یک مقدار را برمیگردانند و از خطاهای احتمالی جلوگیری میشود.
راه حلهای جایگزین:
اگر نیاز دارید که یک عمل شرطی را بر روی یک تابع void انجام دهید، میتوانید از ساختارهای کنترلی مانند if-else استفاده کنید.
if (condition) {
// فراخوانی تابع void
myVoidMethod();
} else {
// انجام کار دیگری
}جمعبندی:
محدودیت عملگرهای سه گانه در پذیرش توابع void به دلیل ماهیت بازگرداندن مقدار این عملگرها است. این محدودیت به سادگی و خوانایی کد کمک میکند و از خطاهای احتمالی جلوگیری میکند. در مواردی که نیاز به انجام یک عمل شرطی بر روی یک تابع void دارید، بهتر است از ساختارهای کنترلی مانند if-else استفاده کنید.
منتظر نگاه های زیباتون هستم .
موفق و پیروز باشید.
مطلبی دیگر از این انتشارات
HashMap VS TreeMap VS Set
مطلبی دیگر از این انتشارات
StringBuilder vs StringBuffer vs String in java
مطلبی دیگر از این انتشارات
LogBack , Log4J , Log4j2 , Slf4j