Javaのlambda式をくどくど言う

8318 ワード

Copyright©Stonee
1.lambdaの紹介と特徴
  • lambdaギリシャ文字λ”.論理学者のAlonzo Churchが効率的に計算できる数学関数を形式的に表現しようとしたことに由来し、ギリシャのアルファベットlambda(λ)パラメータをマークします.パラメータ変数付きの式をlambda式と呼びます.
  • 私の理解について、lambda式はパラメータ付き関数の簡略化方式と考えることができます.
  • lambda式は数学的な意味であり、Javaだけでなくpyなどのプログラミング言語にもこのような特性があることに注意しなければならない.
  • 2.Javaにおけるlambda式の構文
  • 簡単な方法を見てみましょう.
  • です.
    void func(String s){
        System.out.println("stonee is so cool");
    }
    

      はどのようにlambda式で表されますか?まず、lambdaはインタフェースを実現する方法の一つなので、方法の戻り値、方法名、パラメータタイプを省略することができます.これは式です.
    ( s ) -> {System.out.println("stonee is so cool");}
    

    ただし、この式には文が1つしかありません.式のカッコを省略することもできます.
  • lambda式を使用する前提条件は、lambda式が指す変数のタイプが抽象的な方法しかないインタフェースであることです.たとえば、iF a = () -> System.out.println("Stonee is so cool");では、iFは抽象的な方法しかないインタフェースである必要があります.lambda式は、このインタフェースを実現する方法です.このインタフェースを関数インタフェースと呼びます.Lambda式はblockであり、タイプがあると考えられています.前の例では、そのタイプはiFです.このタイプしかありません.
  • は、lambda式がいくつかのブランチでのみ1つの値を返すが、他のブランチでは値を返さないことに注意しなければならない.これは合法的ではない.(int x) -> {if (x >0 ) return 1;}は明らかに、上記の例はelseブランチで
  • の値を返さない.
    3.Javaでlambda式を導入する理由
  • Javaはオブジェクト向けの言語であることを知っています.lambda式を導入する前に、コードセグメントを伝達するには、Javaはオブジェクトを構築する必要があります.このオブジェクトのクラスには、必要なコードセグメントを含む方法があり、オブジェクトを通じてコードセグメントを伝達する必要があります.これは複雑すぎます.lambda式を使用することで、コードセグメントを直接伝達することができます.栗可第4点:lambda式の処理と応用における関数式プログラミングを参照する.肉眼で最も直感的に見ると、lambda式の導入はプログラムをより簡潔にする
  • である.
    4.lambda式の処理と応用
  • 関数式プログラミング(lambda式を関数のパラメータに埋め込む方法):
  • package chapter06.Lambda;
    
    public class Test01 {    
        public static void main(String [] args){        
            shit(s -> System.out.println(s),"Hello, world");   //   lambda      dosomefxxk();  
        }    
        public static void shit(I lambda, String s){                
            lambda.doSomeFxxk(s);    
        }
    }
    @Functional
    Interfaceinterface I{    
        void doSomeFxxk(String s);
    }
    

    ただし、lambda式が適用されない場合、コードは次のようになります.
    package chapter06.Lambda;
    
    public class Test01 {    
        public static void main(String [] args){        
            Me okk = new Me();        
            shit(okk,"Hello, world");   
        }
        public static void shit(I lambda, String s){
            lambda.doSomeFxxk(s);
        }
    }
    @Functional
    Interfaceinterface I{    
        void doSomeFxxk(String s);
    }
    class Me implements I { //   class     ,      shit      
        public void doSomeFxxk(String s){        
            System.out.println(s);    
        }
    }
    

    //上記の毛皮、未完待続...