C# macro function via #define __FILE__ __LINE__ ___FUNCTION__ __DATE__ __TIME__
阿新 • • 發佈:2021-12-30
Lambda表示式
- λ是希臘字母表中排序第十一位的字母,英文名為Lambda。
- 其實質是函數語言程式設計
- 使用 Lambda 表示式可以使程式碼變的更加簡潔緊湊。
- 避免匿名內部類定義過多
- 去掉無意義的程式碼,留下核心的思維
語法
(params)->expression[表示式]
(params)->statement[語句]
(params)->{statements}
函式式介面(Functional Interface)
定義
- 任何介面,若只包含唯一抽象方法,那麼它就是函式式介面,對於函式式介面,可以使用Lambda表示式來建立物件。
特徵
- 可選型別宣告:不需要宣告引數型別,編譯器可以統一識別引數值。
- 可選的引數圓括號:一個引數無需定義圓括號,但多個引數需要定義圓括號。
- 可選的大括號:如果主體包含了一個語句,就不需要使用大括號。
- 可選的返回關鍵字:如果主體只有一個表示式返回值則編譯器會自動返回值,大括號需要指定表示式返回了一個數值。
程式碼實現測試
interface FunInterface{ void did(int a,double b); } public class Lambda { //靜態內部類 static class Lambda2 implements FunInterface{ @Override public void did(int a,double b) { System.out.println("靜態內部類實現介面方法"); } } public static void main(String[] args) { //區域性內部類 class Lambda3 implements FunInterface{ @Override public void did(int a,double b) { System.out.println("區域性內部類實現介面方法"); } } FunInterface l1=new Lambda1(); FunInterface l2=new Lambda2(); FunInterface l3=new Lambda3(); //匿名內部類 FunInterface l4=new FunInterface() { @Override public void did(int a,double b) { System.out.println("匿名內部類實現介面方法"); } }; //Lambda表示式 FunInterface l5=(int a,double b)->{ System.out.println("Lambda表示式1"); }; //省略引數型別 FunInterface l6=(a,b)->{ System.out.println("Lambda表示式2"); }; //若方法中只有一條語句,可省略中括號 FunInterface l7=(a,b)-> System.out.println("Lambda表示式2"); //輸出檢視 l1.did(1,3.5); l2.did(1,3.5); l3.did(1,3.5); l4.did(1,3.5); l5.did(1,3.5); l6.did(1,3.5); l7.did(1,3.5); } } //實現類 class Lambda1 implements FunInterface{ @Override public void did(int a,double b) { System.out.println("類實現介面方法"); } }
輸出結果
類實現介面方法
靜態內部類實現介面方法
區域性內部類實現介面方法
匿名內部類實現介面方法
Lambda表示式1
Lambda表示式2
Lambda表示式2