Lambda表達式 閉包。允許將函數作為一個方法的參數傳遞進方法中。 本質上是一個匿名方法。 理解的時候,可以將Lambda表達式的內容轉化為一個方法去理解。 語法 (paramters) -> expression (parameters) -> { statements; } (int a) - ...
Lambda表達式
閉包。允許將函數作為一個方法的參數傳遞進方法中。
本質上是一個匿名方法。
理解的時候,可以將Lambda表達式的內容轉化為一個方法去理解。
語法
(paramters) -> expression
(parameters) -> { statements; }
(int a) -> {return a * a;}
(int a,int b) -> {return a + b;}
a -> a * a;
(a, b) -> a + b
特點:
- 可選類型聲明:不需要聲明參數類型,編譯器可以統一識別參數值。
- 可選的參數圓括弧:一個參數無需定義圓括弧,但多個參數需要定義圓括弧。
- 可選的大括弧:如果主體包含了一個語句,就不需要使用大括弧。
- 可選的返回關鍵字:如果主體只有一個表達式返回值則編譯器會自動返回值,大括弧需要指定明表達式返回了一個數值。
lambda表達式中的變數作用域
lambda 表達式只能引用標記了 final 的外層局部變數,即不能在 lambda 內部修改定義在域外的局部變數,否則會編譯錯誤。
註意
雖然使用Lambda表達式可以對某些介面進行簡單的實現,但並不是所有的介面都可以使用 Lambda 表達式來實現。
使用Lambda表達式的需要是函數式介面。