تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 5 از 5

نام تاپيک: <=

  1. #1
    آخر فروم باز
    تاريخ عضويت
    Jul 2009
    پست ها
    6,351

    پيش فرض <=

    سلام

    از عزیزان امکان داره کسی توضیحی به ما بدهند؟ نحوه و چرایی استفاده؟
    (در مورد این عملگر)


    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]


  2. این کاربر از Life24 بخاطر این مطلب مفید تشکر کرده است


  3. #2
    پروفشنال anvar.net's Avatar
    تاريخ عضويت
    Apr 2007
    محل سكونت
    IRAN
    پست ها
    648

    پيش فرض

    سمبل => به عملگر لامبدا معروفه و صریحا به کامپایلر اعلان می کند که عبارت مورد نظر از نوع لامبدا هست : از این عملگر در عبارات لامبدا برای جدا کردن متغیرهای ورودی که در سمت چپ قرار دارند (همان پارامترهای ورودی به یک تابع در نظر بگیر) از بدنه لامبدا که در سمت راست قرار دارد (همان کدهای اجرایی درون تابع در نظر بگیر) استفاده میشود. در واقع عبارات لامبدا نسخه کوتاه شده توابع معمولی اما با قدرت مانور بیشتر هستند. به شبه کد تابع زیر دقت کن :

    int func (int x)
    {
    return x+2
    }
    حالا اگر بخواهیم همین تابع رو بصورت عبارت لامبدا تعریف کنیم بصورت زیر میشود : در سمت چپ پارامترهای ورودی | بعد عملگر لامبدا | بعد هم بدنه تابع
    (int x) => x+2
    موقعی که عبارات لامبدا رو می خونیم عملگر لامبدا یعنی => را بصورت "می رود به" تلفظ می کنیم .

    مزیت عبارات لامبدا در اینه که توسط کامپایلر بعنوان Delegete در نظر گرفته می شوند - می توانند یک تابع را بعنوان خروجی برگشت دهند و توانایی تعریف توابع Inline رو به برنامه نویس می دهند. در کتاب های مربوط به LINQ در این مورد اطلاعات بیشتری موجوده
    این مقاله هم مفیده : [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]

  4. 3 کاربر از anvar.net بخاطر این مطلب مفید تشکر کرده اند


  5. #3
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    گرچه توضیحات دوستمان قدیمی مان anvar.net کاملاً صحیح بوده ولی بظاهر دوستان دیگر مثال برایشان کافی نبوده و کمی به توضیحات و مثال بیشتر نیاز دارند ...
    به بیان خودمانی تر لامبدا همان تابع و متد است، فقط یکجورهایی خلاصه نویسی شده.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    کد فوق با کد زیر برابر است
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    میتوانید امتحان کنید!
    درواقع نه تنها برابر است، بلکه کامپایلر کداول را به کددوم تبدیل و سپس کامپایل میکند!

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

  6. 3 کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده اند


  7. #4
    آخر فروم باز
    تاريخ عضويت
    Jul 2009
    پست ها
    6,351

    پيش فرض

    عذر خواهی میکنم این o یعنی چی؟ از لحاظ دستوری وقتی () خالی گذاشتیم.یعنی تابع رو بدنه اش داریم جلو تر معرفی میکنیم درسته؟ اما o میزاریم چی؟

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    با

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

  8. #5
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    از لحاظ دستوری وقتی () خالی گذاشتیم.یعنی تابع رو بدنه اش داریم جلو تر معرفی میکنیم درسته؟
    خیر!

    کلاً قبل از این نماد خاص لامبدا، پارامترهای ورودی تابع را مشخص میکنیم و بعد این نماد خاص، بدنه تابع را مینویسیم.

    در واقع به ترتیب تایپ میشود: پارامتر ورودی-نماد لامبدا-بدنه تابع لامبدا

    بنابر توضیح فوق، یک جفت ( ) خالی یعنی تابع ما هیچ پارامتر ورودی دریافت نمیکند.


    اما o میزاریم چی؟
    بنابر همان توضیح قبل، وقتی نامی قبل از نماد لامبدا بیاید به معنی پارامتر ورودی برای تابع ما خواهد بود.
    o نام پارامتر ورودی است و نوع آن خودکار از delegate مورد نیاز در آن محل مشخص میشود.

    دقیقاً مانند x که دوستمان anvar.net در مثالشان گذاشته بودند.

    برای روشن شدن بهتر سینتکس ، سه مثال در زیر را مشاهده کنید.

    عبارت لامبدا بدون پارامتر
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    عبارت لامبدا با یک پارامتر ورودی
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    دقت کنید که پرانتز پارامترهای ورودی لامبدا، فقط در حالت تک پارامتره، اختیاری است و در کلیه حالات دیگر، اجباری است.
    شبیه if ای که اگر بدنه تک دستوره داشته باشد، میتوانید { } را تایپ نکنید! ولی تایپش هم مشکل ندارد!

    عبارت لامبدا با دو پارامتر ورودی
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    همانطورکه قبلاً هم بیان شد عبارات دامبدا شما توسط کامپایلر بطور خودکار به کدی شبیه NormalFunc تبدیل و سپس کامپایل نهایی میشود.
    دقت کنید که چطور در عبارات دامبدا فوق ما فقط نام پارامتر x و y را آورده ایم و نوع آن را ذکر نکردیم.
    در واقع کامپایلر نوع پارامترها را (در اینجا int) خودکار از روی delegate مورد نیاز (در اینجا SampleDelegate) در محل (در اینجا ورودی تابع Loop) متوجه میشود
    موفق باشید.

  9. این کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده است


Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •