صادق خانزادی
صادق خانزادی
خواندن ۲ دقیقه·۴ ماه پیش

Ternary Operator in Java

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

در این مقاله فرض میکنیم که شما اطلاعات حدودی از Java Collections دارید.

این سلسله مقالات که برای تکمیل مقاله Java Collections - Everything You MUST Know نوشته شده برای بهبود و درک بهتر collectionها و مواردی که به طور روزمره دارید استفاده میکنید نوشته شده لطفا تمام این دسته بندی رو برای درک بهتر مطالعه کنید .

Mutable VS Immutable in java

StringBuilder vs StringBuffer vs String

Integer vs int

HashMap vs TreeMap vs Set

Heap And Stack

Memory Heap vs Memory Leak

Integer Constant Pool

Integer Pool vs String Pool

Ternary Operator

Autoboxing



عملگرهای سه گانه در جاوا یک ساختار دستوری فشرده برای بیان عبارات شرطی هستند. آن‌ها به این صورت عمل می‌کنند که یک شرط را بررسی کرده و بر اساس نتیجه آن، یکی از دو مقدار را برمی‌گردانند.

دلیل اصلی اینکه عملگرهای سه گانه توابع 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 استفاده کنید.


منتظر نگاه های زیباتون هستم .

موفق و پیروز باشید.

java
Java Developer - Technical Team Lead At Dotin
شاید از این پست‌ها خوشتان بیاید