# Lambda 是什麼?

Lambda 表達式是一小段代碼,它接受參數並返回一個值。
Lambda 表達式類似於方法,但它們不需要名稱,並且可以直接在方法中實現。

# 語法

最簡單的使用方式,就是只使用一個參數和一個表達式:

使用格式
parameter -> expression

使用 () 可以傳入多個參數:

使用格式
(parameter1, parameter2) -> expression

上面的使用必須立即返回一個值,並不能包含宣告變數、賦值或 iffor 之類的語句。

因此,為了進行更複雜的操作,程式碼區塊可以搭配大括號 {} 一起使用。
如果 Lambda 表達式需要返回一個值,那麼代碼塊應該有一個 return 語句。

使用格式
(parameter1, parameter2) -> { code block }

感覺是不是超像 javascript 的箭頭函式阿~~

# 使用 Lambda 表達式

Lambda 表達式通常作為參數傳給函式:

使用 Lambda 表達式在 ArrayListforEach() 裡輸出 list 內容。

public static void main(String[] args) {
    ArrayList<Integer> numbers = new ArrayList<Integer>();
    numbers.add(5);
    numbers.add(9);
    numbers.add(8);
    numbers.add(1);
    numbers.forEach((n) -> System.out.println(n));
}

如果變數的類型是只有一個方法的介面,則 Lambda 表達式可以存儲在變數中。
lambda 表達式應該與該方法具有相同數量的參數和相同的返回類型。
Java 內置了許多此類介面,例如列表使用的 Consumer 介面(在 java.util 包中)。

public static void main(String[] args) {
    ArrayList<Integer> numbers = new ArrayList<Integer>();
    numbers.add(5);
    numbers.add(9);
    numbers.add(8);
    numbers.add(1);
    Consumer<Integer> method = (n) -> { System.out.println(n); };
    numbers.forEach( method );
}

要在方法中使用 lambda 表達式,該方法應該有一個參數,其類型為單方法介面
調用介面的方法將運行 lambda 表達式:

interface StringFunction {
    String run(String str);
}
public class Main {
    public static void main(String[] args) {
        StringFunction exclaim = (s) -> s + "!";
        StringFunction ask = (s) -> s + "?";
        printFormatted("Hello", exclaim);
        printFormatted("Hello", ask);
    }
    public static void printFormatted(String str, StringFunction format){
        String result = format.run(str);
        System.out.println(result);
    }
}
更新於 閱讀次數

用實際行動犒賞爆肝的我😀

Zrn Ye LinePay

LinePay