引数としてのラムダ式の概念:
目的の例:
関数インターフェース構造:
changeStr() メソッドの定義:
changeStr() メソッドは 2 つのパラメータを取ります:
StringFunc 型のパラメーター (関数インターフェイス)。
操作される文字列。
このメソッドは、インターフェイス関数を String に適用し、結果を返します。
ラムダ式の使用:
例 1: 文字列の文字を反転し、それを反転変数に割り当てるラムダ式。
ラムダ式をchangeStr()に渡して文字列を反転します。
例 2: スペースをハイフンに置き換え、changeStr() に直接渡されるラムダ式。
例 3: 文字列内の文字の大文字と小文字を反転し、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
所見:
ラムダ式を引数としてメソッドに直接渡すと、コードの柔軟性と可読性が向上します。
文字の大文字と小文字を反転するラムダ式はより複雑ですが、メソッドに直接渡すことができます。一般に、より複雑なラムダを変数に割り当てる方が適切です。
以上がこれを引数としてラムダ式として試してくださいの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。