Rumah >Java >javaTutorial >Cuba Ini sebagai ungkapan lambda sebagai hujah

Cuba Ini sebagai ungkapan lambda sebagai hujah

Barbara Streisand
Barbara Streisandasal
2025-01-12 07:10:42546semak imbas

Konsep Ungkapan Lambda sebagai Hujah:

  • Ungkapan lambda boleh dihantar sebagai hujah dalam kaedah yang menerima jenis sasaran yang serasi.
  • Ini berguna kerana ia membolehkan anda menghantar kod boleh laku sebagai hujah, menjadikan kod lebih ekspresif.

Contoh Objektif:

  • Buat fungsi manipulasi rentetan (terbalikkan, terbalikkan huruf besar dan gantikan ruang dengan sempang) menggunakan ungkapan lambda.
  • Ungkapan ini dihantar kepada kaedah changeStr(), yang menggunakan fungsi dan mengembalikan hasilnya.

Struktur Antara Muka Fungsian:

  • Tentukan antara muka StringFunc dengan func kaedah(String str), yang menerima dan mengembalikan String.

Takrifan kaedah changeStr():
Kaedah changeStr() mengambil dua parameter:
Parameter jenis StringFunc (antara muka berfungsi).
Rentetan untuk dimanipulasi.
Kaedah menggunakan fungsi antara muka pada String dan mengembalikan hasilnya.

Penggunaan Ungkapan Lambda:
Contoh 1: Ungkapan Lambda yang membalikkan aksara rentetan dan menetapkannya kepada pemboleh ubah terbalik.

Melalukan ungkapan lambda kepada changeStr() untuk membalikkan rentetan.

Contoh 2: Ungkapan Lambda yang menggantikan ruang dengan sempang dan dihantar terus ke changeStr().

Contoh 3: Sekat ungkapan lambda yang membalikkan huruf besar dalam rentetan dan juga dihantar terus ke changeStr().

Contoh Kod Penuh:
Berikut ialah kod lengkap yang menunjukkan cara untuk menghantar ungkapan lambda kepada kaedah 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);
    }
}

Keluaran Jangkaan:

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

Pemerhatian:
Menghantar ungkapan lambda secara langsung sebagai argumen kepada kaedah meningkatkan fleksibiliti dan kebolehbacaan kod.
Ungkapan lambda yang membalikkan kes huruf adalah lebih kompleks, tetapi masih boleh dihantar terus ke dalam kaedah. Secara umum, lambda yang lebih kompleks lebih baik diberikan kepada pembolehubah.

Tente Isto asse uma expressão lambda como argumento

Atas ialah kandungan terperinci Cuba Ini sebagai ungkapan lambda sebagai hujah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Lettuce - Pelanggan Java RedisArtikel seterusnya:Lettuce - Pelanggan Java Redis