عبارت های لامبدا در جاوا – راهنمای کاربردی

۳۹۶
۱۴۰۳/۰۹/۷
۳ دقیقه
PDF
آموزش متنی جامع
امکان دانلود نسخه PDF

پیش از آنکه پشتیبانی از عبارت‌های لامبدا در نسخه JDK8 به جاوا اضافه شود، ما تنها در زبان‌هایی مانند #C و ++C از آن‌ها استفاده کرده بودیم. اینک که این قابلیت به جاوا اضافه شده است باید نگاهی دقیق‌تر به آن‌ها بیندازیم. اضافه شدن عبارت های لامبدا در جاوا موجب اضافه شدن عناصر ساختاری دیگری به این زبان شده است که توان بیان عبارت‌ها را در جاوا بالا برده است. در این مقاله می‌خواهیم روی مبانی مقدماتی که برای آغاز کار با عبارت‌های لامبدا در کدهای مدرن نیاز دارید تمرکز کنیم.

عبارت های لامبدا در جاوا – راهنمای کاربردیعبارت های لامبدا در جاوا – راهنمای کاربردی
997696

مقدمه

عبارت‌های لامبدا از مزیت ظرفیت‌های پردازش موازی محیط‌های چند نخی چنان که در پشتیبانی از عملیات pipeline روی داده‌ها در API Stream دیده‌ایم استفاده می‌کنند. برخی متدهای بی‌نام وجود دارند که برای پیاده‌سازی متد تعریف شده از سوی یک اینترفیس تابعی استفاده می‌شوند. پیش از آشنا شدن با عبارت‌های لامبدا باید با مفهوم اینترفیس تابعی آشنا شوید.

اینترفیس‌های تابعی

اینترفیس تابعی اینترفیسی است که شامل یک و تنها یک متد مجرد است. اگر نگاهی به تعریف اینترفیس Runnable استاندارد جاوا بکنید، متوجه خواهید شد که در تعریف اینترفیس تابعی قرار می‌گیرد، زیرا تنها یک متد یعنی ()run را تعریف می‌کند. در قطعه کد نمونه زیر متد computeName به صراحت مجرد است و تنها متد تعریف شده است که موجب می‌شود MyName یک اینترفیس تابعی باشد.

عملگر arrow

عبارت‌های لامبدا عملگر جدید arrow را به صورت (<-) در جاوا معرفی کرده‌اند. و این عملگر عبارت لامبدا را به دو بخش تقسیم می‌کند:

(n) -> n*n

سمت چپ پارامترهای مورد نیاز عبارت را تعیین می‌کند که در صورت عدم نیاز به پارامتر می‌تواند خالی هم باشد. سمت راست بدنه لامبدا است که اقدامات عبارت لامبدا را تعیین می‌کند. این عملگر را می‌توان به صورت «تبدیل می‌شود» ترجمه کرد. برای نمونه در مثال فوق «n تبدیل می‌شود به n*n» یا «n تبدیل می‌شود به جذر n.» با استفاده از اینترفیس تابعی و عملگر arrow می‌توانید یک عبارت لامبدای ساده را کنار هم قرار دهید:

لامبدای خوش‌ آمدگویی

متغیرهای morningGreeting و eveningGreeting در خطوط 6 و 7 فوق ارجاعی به اینترفیس MyGreeting دارند و عبارت‌های خوشامدگویی مختلفی را تعریف می‌کنند. زمانی که یک عبارت لامبدا می‌نویسیم امکان تعیین صریح نوع پارامتر در عبارت به صورت زیر نیز وجود دارد:

عبارت‌های لامبدای بلوکی

تا به اینجا، نمونه‌هایی از لامبداهای عبارت منفرد را مورد بررسی قرار دادیم. نوع دیگری از عبارت نیز وجود دارد که هنگامی استفاده می‌شود که کد سمت راست عملگر arrow شامل بیش از یک گزاره باشد که به نام «لامبدای بلوکی» (block lambdas) شناخته می‌شود:

اینترفیس‌های تابعی ژنریک

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

عبارت های لامبدا در جاوا

عبارت لامبدا به عنوان آرگومان

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

سخن پایانی

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

اگر این مطلب برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

==

بر اساس رای ۱ نفر
آیا این مطلب برای شما مفید بود؟
اگر پرسشی درباره این مطلب دارید، آن را با ما مطرح کنید.
منابع:
better-programming
PDF
مطالب مرتبط
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *