[Java]ランダ食(Lambda)?
Lambda?
関数式プログラミング言語で使用される概念は、匿名関数の用語を指す.関数式プログラミングを容易にサポートするためにjava 8からLambda Expressionをサポートします.ラムダ式は(パラメータ)->実行コードとして記述される.
匿名関数とは?
関数名のない関数.匿名関数は、第1のクラスのオブジェクトの特徴を持つ1レベルのオブジェクトです.コンピュータプログラミング言語設計では、一級オブジェクトとは、他のすべてのオブジェクトの汎用演算をサポートするオブジェクトを指す.一般に、パラメータとしての伝達、修正、代入変数などの演算がサポートされる場合、一級オブジェクトと呼ばれる.
reference:wikipedia(一級オブジェクト)
メリットとデメリット
長所
ラムダ式を呼び出す
ラムダ式は関数型インタフェースを実現するオブジェクトである.関数インタフェースで宣言された抽象メソッドを実装する方法で記述されます.
interface Func {
int calc(int a, int b);
}
//추상메소드 calc() 한개만 가진 함수형 인터페이스 Func 이다.
ランダコールFunc f = (int a, int b) -> { return a + b; }
//OR
Func f = (a, b) -> { return a + b; }
Example
interface Func{
int calc(int a, int b);
}
public class Example1 {
public static void main(String[] args){
Func add = (a,b) -> { return a+b;}
Func minus = (a,b) -> a-b;
System.out.println(add.calc(1,2));
System.out.println(minus.cals(5,1));
}
}
interface Func{
int calc(int a);
}
public class Example2 {
public static void main(String[] args){
Func multi = a -> a * a
System.out.println(multi.calc(3));
}
}
interface Func{
void print();
}
public class Example3 {
public static void main(String[] args){
Func f = () -> { System.out.println("Lambda Expression"); }
f.print();
f = () -> System.out.println("Another Lambda Expresssion");
f.print();
}
}
ラムダ式を方法とするパラメータ伝達interface Func{
int calc(int a, int b);
}
public class Example4 {
public static void main(String[] args){
print(3,4, (a,b)->a+b);
}
public void print(int a, int b, Func f){
System.out.print(f.clac(a,b));
}
}
@FunctionalInterface Annotation!
@Functional Interface操作を使用すると、コンパイラに関数インタフェースの作成を通知できます.その利点は、コンパイラにインタフェースが抽象的な方法しかない関数インタフェースであるかどうかをチェックさせ、誤ったインタフェースの作成を防止することです.
@FunctionalInterface
interface Func{ // 컴파일 오류 발생
int calc(int a);
void print();
}
reference👍Reference
この問題について([Java]ランダ食(Lambda)?), 我々は、より多くの情報をここで見つけました https://velog.io/@brianhwang/Java-람다식Lambdaテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol