1. 程式人生 > 其它 >C# macro function via #define __FILE__ __LINE__ ___FUNCTION__ __DATE__ __TIME__

C# macro function via #define __FILE__ __LINE__ ___FUNCTION__ __DATE__ __TIME__

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