Lambda 表達式概念作為參數:
範例目標:
功能介面結構:
changeStr() 方法的定義:
changeStr() 方法有兩個參數:
StringFunc(函數式介面)類型的參數。
要操作的字串。
此方法將介面函數應用於 String 並傳回結果。
Lambda 表達式的使用:
範例 1: Lambda 表達式,反轉字串的字元並將其指派給反轉變量。
將 lambda 表達式傳遞給changeStr() 以反轉字串。
範例 2: 用連字取代空格並直接傳遞給changeStr()的 Lambda 表達式。
範例 3: 區塊 lambda 表達式,它反轉字串中字母的大小寫,也直接傳遞給changeStr()。
完整程式碼範例:
以下是完整的程式碼,展示如何將 lambda 表達式傳遞給 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
觀察結果:
將 lambda 表達式直接作為參數傳遞給方法可以提高程式碼的靈活性和可讀性。
反轉字母大小寫的 lambda 表達式較複雜,但仍可直接傳遞到方法中。一般來說,較複雜的 lambda 表達式更適合分配給變數。
以上是嘗試將其作為 lambda 表達式作為參數的詳細內容。更多資訊請關注PHP中文網其他相關文章!