PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : عبارات Lambda در #C



آبجی
14th February 2010, 12:59 AM
Lambda در ۳/۰ #C معرفی شد و برای معرفی متدهای anonymous به پارامتر یک تابع با ارائه ی سینتکسی ساده استفاده میشه.
خیلی از مقالات و کتاب ها، Lambda رو به سختی توضیح میدن. از اونجایی که تخصص من در ساده کردن مسائل و بیانشون به شکلی قابل فهم برای مبتدی ترین افراد هست، قصد دارم تا عبارات Lambda رو به شکلی ساده توضیح بدم.
قبل از اون نیاز هست تا توضیح مختصری در مورد متدهای anonymous بدم.
متدهای anonymous متدهایی هستند ک بدنه ی اونها در داخل پارامتر تابعی که قصد داره متدی رو به عنوان پارامتر ورودی بگیره تعریف میشن. یعنی به جای اینکه نام تابع به عنوان پارامتر به تابع یا متد دیگری پاس داده بشه، بدنه ی تابع با استفاده از delegate به متد پاس داده میشه!
به عنوان یک شبه دستور:
int result;
result = AddCustomer(”behrouz”, delegate(int height, int width) {return height + width;});
جالب بود نه؟!
و اما Lambda…
فلسفه ی وجودی عبارت Lambda فقط و فقط برای ساده تر کردن نحوه ی فراخوانی یک متد anonymous هست.
معادل دستور بالا با استفاده از عبارت Lambda به شکل ذیل میشه:
int result;
result = AddCustomer(”behrouz”, (int height, int width) => {return height + width;});
کلمه ی delegate حذف شد و بین پارامترهای متد anonymous و بدنه ی اون، نماد <= قرار گرفت!
والسلام!
عبارات Lambda این اجازه رو میدن که حتی سینتکس بالا رو ساده تر هم کنید…
از جمله حذف نوع پارامترهای ورودی و حذف کلمه ی return.
دستور ذیل هم معادل دو دستور فوق هست:
int result;
result = AddCustomer(”behrouz”, (height, width) => {height + width;});
اگر هم متد anonymous شما پارامتر ورودی نداشت و فقط مقداری رو برگشت میداد، ذکر () قبل از <= اجباری هست…
عبارات Lambda در LINQ کاربرد زیادی دارند. برخی جاها هست که فقط و فقط باید از Lambda استفاده کنید.

استفاده از تمامی مطالب سایت تنها با ذکر منبع آن به نام سایت علمی نخبگان جوان و ذکر آدرس سایت مجاز است

استفاده از نام و برند نخبگان جوان به هر نحو توسط سایر سایت ها ممنوع بوده و پیگرد قانونی دارد