برنامه نویسی

این 14-1 را امتحان کنید. یک عبارت لامبدا را به عنوان آرگومان ارسال کنید

مفهوم بیان لامبدا به عنوان استدلال:

  • یک عبارت لامبدا را می توان به عنوان آرگومان در روش هایی که انواع هدف سازگار را می پذیرند، ارسال کرد.
  • این مفید است زیرا به شما امکان می دهد کدهای اجرایی را به عنوان آرگومان ارسال کنید و کد را رساتر می کند.

هدف مثال:

  • با استفاده از عبارات لامبدا توابع دستکاری رشته (معکوس کردن، حروف معکوس و جایگزین کردن فاصله ها با خط تیره) ایجاد کنید.
  • این عبارات به متد changeStr() ارسال می شود که توابع را اعمال می کند و نتیجه را برمی گرداند.

ساختار رابط عملکردی:

  • رابط StringFunc را با متد func(String str) تعریف کنید که یک رشته را می پذیرد و برمی گرداند.

تعریف متد ()ChangeStr:
متد changeStr() دو پارامتر دارد:
پارامتری از نوع StringFunc (رابط عملکردی).
رشته ای که باید دستکاری شود.
متد تابع Interface را روی String اعمال می کند و نتیجه را برمی گرداند.

استفاده از بیان لامبدا:
مثال 1: عبارت Lambda که کاراکترهای یک رشته را معکوس می کند و آن را به متغیر معکوس اختصاص می دهد.

عبارت lambda را به changeStr() منتقل می کند تا رشته را معکوس کند.

مثال 2: عبارت Lambda که فاصله ها را با خط تیره جایگزین می کند و مستقیماً به changeStr().

مثال 3: بلوک عبارت lambda که حروف یک رشته را معکوس می کند و همچنین مستقیماً به changeStr().

نمونه کد کامل:
در زیر کد کاملی وجود دارد که نحوه ارسال عبارات لامبدا را به متد changeStr() نشان می دهد:

interface StringFunc {
    String func(String str);
}

class LambdaArgumentDemo {
    static String changeStr(StringFunc sf, String s) {
        return sf.func(s);
    }

    public static void main(String args[]) {
        String inStr = "Lambda Expressions Expand Java";
        String outStr;
        System.out.println("Here is input string: " + inStr);

        // Expressão lambda para inverter a string
        StringFunc reverse = (str) -> {
            String result = "";
            for (int i = str.length() - 1; i >= 0; i--)
                result += str.charAt(i);
            return result;
        };

        // Passando a expressão lambda 'reverse' para o método
        outStr = changeStr(reverse, inStr);
        System.out.println("The string reversed: " + outStr);

        // Expressão lambda para substituir espaços por hífens
        outStr = changeStr((str) -> str.replace(' ', '-'), inStr);
        System.out.println("The string with spaces replaced: " + outStr);

        // Expressão lambda para inverter a caixa das letras
        outStr = changeStr((str) -> {
            String result = "";
            char ch;
            for (int i = 0; i < str.length(); i++) {
                ch = str.charAt(i);
                if (Character.isUpperCase(ch))
                    result += Character.toLowerCase(ch);
                else
                    result += Character.toUpperCase(ch);
            }
            return result;
        }, inStr);
        System.out.println("The string in reversed case: " + outStr);
    }
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

خروجی مورد انتظار:

Here is input string: Lambda Expressions Expand Java
The string reversed: avaJ dnapxE snoisserpxE adbmaL
The string with spaces replaced: Lambda-Expressions-Expand-Java
The string in reversed case: lAMBDA eXPRESSIONS eXPAND jAVA

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

یادداشت ها:
ارسال مستقیم عبارات لامبدا به عنوان آرگومان به متدها، انعطاف پذیری و خوانایی کد را افزایش می دهد.
عبارت لامبدا که حروف را معکوس می کند، پیچیده تر است، اما همچنان می تواند مستقیماً به روش منتقل شود. به طور کلی، لامبداهای پیچیده تر بهتر به متغیرها اختصاص داده می شوند.

نوشته های مشابه

دیدگاهتان را بنویسید

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

دکمه بازگشت به بالا