在 Java 中阻塞 Lambda 表达式
原文:https://www . geesforgeks . org/block-lambda-expressions-in-Java/
Lambda 表达式是一个不单独执行的未命名方法。这些表达式导致匿名类。这些 lambda 表达式称为闭包。Lambda 的主体由一段代码组成。如果只有一个单独的表达式,它们被称为“表达式主体”。包含表达体的 Lambdas 被称为“表达 Lambdas ”。下面是单行的 Lambda 表达式示例。
块 lambda 包含许多对 lambda 表达式起作用的操作,因为它允许 Lambda 主体有许多语句。这包括变量、循环、条件语句,如 if、else 和 switch 语句、嵌套块等。这是通过将 lambda 主体中的语句块包含在大括号{}中来创建的。这甚至可以有一个返回语句,即返回值。
语法:λ表达式
(parameters) -> { lambda body }
现在,首先让我们了解一下 Lambda 表达式,以了解 block lambda 表达式。
插图:
在这种情况下,lambda 在其 lambda 主体中可能需要不止一个表达式。Java 支持表达式 Lambdas,它包含具有多个语句的代码块。我们称这种类型的λ体为“ ”块状体 ”。包含块体的 Lambda 可称为“Block Lambdas”。
代表λ表达式的示例
Java 语言(一种计算机语言,尤用于创建网站)
// Java Program to illustrate Lambda expression
// Importing input output classes
import java.io.*;
// Interface
// If1 is name of this interface
interface If1 {
// Member function of this interface
// Abstract function
boolean fun(int n);
}
// Class
class GFG {
// Main driver method
public static void main(String[] args)
{
// Lambda expression body
If1 isEven = (n) -> (n % 2) == 0;
// Above is lambda expression which tests
// passed number is even or odd
// Condition check over some number N
// by calling the above function
// using isEven() over fun() defined above
// Input is passed as a parameter N
// Say custom input N = 21
if (isEven.fun(21))
// Display message to be printed
System.out.println("21 is even");
else
// Display message to be printed
System.out.println("21 is odd");
}
}
Output
21 is odd
现在切换到块λ表达式的实现,后面有两个例子,如下所示:
实施:
例 1:
Java 语言(一种计算机语言,尤用于创建网站)
// Java Program to illustrate Block Lambda expression
// Importing all classes from
// java.util package
import java.io.*;
// Block lambda to find out factorial
// of a number
// Interface
interface Func {
// n is some natural number whose
// factorial is to be computed
int fact(int n);
}
// Class
// Main class
class GFG {
// Main driver method
public static void main(String[] args)
{
// Block lambda expression
Func f = (n) ->
{
// Block body
// Initially initializing with 1
int res = 1;
// iterating from 1 to the current number
// to find factorial by multiplication
for (int i = 1; i <= n; i++)
res = i * res;
return res;
};
// Calling lambda function
// Print and display n the console
System.out.println("Factorial of 5 : " + f.fact(5));
}
}
Output
Factorial of 5: 120
在这个块中,lambda 声明了一个变量“res”,用于循环,并具有在 lambda 主体中合法的返回语句。
例 2:
Java 语言(一种计算机语言,尤用于创建网站)
// Java Program to illustrate Block Lambda expression
// Importing all input output classes
import java.io.*;
// Interface
// Functional interface named 'New'
interface New {
// Boolean function to check over
// natural number depicting calender year
// 'n' deepicting year is
// passed as an parameter
boolean test(int n);
}
// Class
// Main class
class GFG {
// Main driver method
public static void main(String[] args)
{
// block lambda
// This block lambda checks if the
// given year is leap year or not
New leapyr = (year) ->
{
// Condition check
// If year is divisible by 400 or the
// year is divisible by 4 and 100 both
if (((year % 400 == 0)
|| (year % 4 == 0) && (year % 100 != 0)))
// Returning true as year is leap year
return true;
else
// Returning false for non-leap years
return false;
};
// Calling lambda function over
// custom input year- 2020
// Condition check using the test()
// defined in the above interface
if (leapyr.test(2020))
// Display message on the console
System.out.println("leap year");
else
// Display message on the console
System.out.println("Non leap year");
}
}
Output
leap year
在这个块中,lambda 有 if-else 条件和返回语句,它们在 lambda 主体中是合法的。
版权属于:月萌API www.moonapi.com,转载请注明出处