پرش به محتوا

آموزش استفاده از لامبدا در زبان دارت


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

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

    methodName((param1, param2) => expression);
    
    

    در کد بالا methodName نام متدی است که به آن لامبدا ارسال می‌شود و param1 و param2 پارامترهای ورودی تابع هستند. expression نیز بیانگر بدنه تابع است.

    اگر بدنه تابع تنها یک خط باشد، می‌توانید از علامت {} و return صرف نظر کنید و به صورت زیر نوشته شود:

    methodName((param1, param2) => expression);
    
    
    
    

    در مثال قبل expression نیز تنها شامل یک عبارت return است.

    اگر بدنه تابع چند خطی باشد، باید از {} استفاده کنید و تمام خطوط کد باید داخل آن نوشته شوند. به عنوان مثال:

    methodName((param1, param2) => {
      statement1;
      statement2;
      return statement3;
    });
    
    

    در مثال بالا statement1 و statement2 دو عبارت می‌باشند که انجام می‌دهند و سپس با استفاده از return عبارت، statement3 به عنوان مقدار بازگشتی تابع برگردانده می‌شود.

    همچنین می‌توانید از پارامترهای اختیاری در توابع لامبدا استفاده کنید. برای این کار، باید پارامترهای اختیاری را در داخل پرانتز تعریف کنید و به عنوان پارامترهای تابع در نظر گرفته شوند. به عنوان مثال:

    methodName((param1, {param2 = defaultValue}) => expression);
    
    

    در مثال بالا param2 یک پارامتر اختیاری است که به صورت پیش‌فرض مقدار defaultValue را دارد.

    در نهایت، لامبداها می‌توانند به صورت شرطی نیز نوشته شوند. برای این کار، باید از عبارت if و else استفاده کنید. به عنوان مثال:

    methodName((param1) => param1 == true ? expression1 : expression2);
    
    

    در مثال بالا اگر param1 برابر با true باشد، expression1 اجرا خواهد شد و در غیر این صورت expression2 اجرا خواهد شد.

    و در ادامه چند مثال از کاربردهای مختلف لامبداها در زبان Dart :

    1. مرتب سازی لیست:
    List<int> numbers = [3, 1, 4, 1, 5, 9];
    
    // مرتب سازی لیست به صورت صعودی با استفاده از لامبدا
    numbers.sort((a, b) => a.compareTo(b));
    
    // مرتب سازی لیست به صورت نزولی با استفاده از لامبدا
    numbers.sort((a, b) => b.compareTo(a));
    
    
    1. فیلتر کردن یک لیست:
    List<int> numbers = [3, 1, 4, 1, 5, 9];
    
    // فیلتر کردن لیست به صورت حتی با استفاده از لامبدا
    List<int> evenNumbers = numbers.where((number) => number % 2 == 0).toList();
    
    // فیلتر کردن لیست به صورت فرد با استفاده از لامبدا
    List<int> oddNumbers = numbers.where((number) => number % 2 != 0).toList();
    
    
    1. تعریف تابع با پارامترهای اختیاری:
    void printPersonInfo(String name, {int age = 18, String city = 'Tehran'}) {
      print('Name: $name, Age: $age, City: $city');
    }
    
    // تعریف تابع با استفاده از لامبدا و پارامترهای اختیاری
    var printUser = (String name, {int age = 18, String city = 'Tehran'}) =>
        print('Name: $name, Age: $age, City: $city');
    
    // فراخوانی تابع با استفاده از لامبدا و پارامترهای اختیاری
    printUser('John'); // Name: Erfan, Age: 18, City: Tehran
    printUser('Sara', age: 25, city: 'Shiraz'); // Name: Sara, Age: 25, City: Shiraz
    
    
    1. تعریف تابع با شرط:
    int maxNumber(int a, int b) {
      if (a > b) {
        return a;
      } else {
        return b;
      }
    }
    
    // تعریف تابع با استفاده از لامبدا و شرط
    var max = (int a, int b) => a > b ? a : b;
    
    // فراخوانی تاب
    
    
    1. استفاده از متد forEach برای اجرای عملیات روی تمام المان‌های یک لیست:
    List<int> numbers = [3, 1, 4, 1, 5, 9];
    
    // استفاده از متد forEach برای اجرای عملیات روی تمام المان‌های یک لیست با استفاده از لامبدا
    numbers.forEach((number) => print(number));
    
    
    1. تعریف یک رشته فرمت شده:
    String formatFullName(String firstName, String lastName) {
      return '$firstName $lastName';
    }
    
    // تعریف یک رشته فرمت شده با استفاده از لامبدا
    var fullName = (String firstName, String lastName) => '$firstName $lastName';
    
    // فراخوانی تابع با استفاده از لامبدا
    print(fullName('Erfan', 'Sadi')); // Erfan Sadi
    
    

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

    5/5 - ( 1 امتیاز )

    دیدگاه شما نگاه ما رو عوض میکنه !

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

    پشتیبانی آنلاین