龟云狄眦-Scala学习札记【二】Scala中lambda表达式的使用

基本概念

   Lambda 表达式 Lambda 表达式”是一个匿名函数,可以包含表达式和语句,并且可用于创建委托或表达式目录树类型。所有 Lambda 表达式都使用 Lambda 运算符 =>;,该运算符读为“goes to”。该 Lambda 运算符的左边是输入参数(如果有),右边包含表达式或语句块。   
   Lambda 表达式 x => x * x 读作“x goes to x times x”。可以将此表达式分配给委托类型,如下所示:
    delegate int del(int i); 
    del myDelegate = x => x * x;
    int j = myDelegate⑸; //j = 25

基本环境

   如果还没有安装Java8,那么你应该先安装才能使用lambda和stream。Lambda表达式是Java8中一个重要的新特性。
   lambda表达式允许你通过表达式来代替功能接口。 lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块)。

基础语法

输入参数

       在Lambda表达式中,输入参数是Lambda运算符的左边部分。它包含参数的数量可以为0、1或者多个。
1. 当输入参数数量为0时,Lambda表达式左边的一对小括号不能省略;
2. 当输入参数数量为1时,Lambda表达式左边的一对小括弧才可以省略;
3. 当输入参数的数量大于或者等于2时,Lambda表达式左边的一对小括弧中的多个参数质检使用逗号(,)分割。

// 1. 不需要参数,返回值为 10  
() -> 10  

// 2. 接收一个参数(数字类型),返回其平方值  
x -> x * x  

// 3. 接受2个参数(数字),并返回他们的和  
(x, y) -> x + y  

// 4. 接收2个int型整数,返回他们的和  
(int x, int y) -> x + y  

// 5. 接受一个string对象,并在控制台打印,不返回任何值(看起来像是返回void)  
(String s) -> System.out.print(s)
   正如所见,lambda表达式可以将我们的代码缩减到一行。另一个例子是在**图形用户界面程序**中,**匿名类**可以使用lambda表达式来代替。 同样,在实现Runnable接口时也可以这样使用:
// 使用匿名内部类  
btn.setOnAction(new EventHandler<ActionEvent>() {  
          @Override  
          public void handle(ActionEvent event) {  
              System.out.println("Hello World!");   
          }  
    });  

// 或者使用 lambda expression  
btn.setOnAction(event -> System.out.println("Hello World!"));

表达式或语句块

   多个Lambda表达式可以构成Lambda语句块。语句块可以放到运算符的右边,作为Lambda的主体。
   根据主题不同,Lambda表达式可以分为表达式Lambda和语句Lambda。语句块中可以包含多条语句,并且可以包含循环、方法调用和if语句等。
  • lambda表达式:(parameters) -> expression
  • lambda语句块:(parameters) ->{statements; }

    如果Lambda表达式的右边部分是一个语句块,那么该语句块必须被”{“和”}”包围。

(m,n)=>{int result=m+n; System.out.println(result);} 

Lambdas在Streams中的使用

   Stream是对集合的包装,通常和lambda一起使用。
   使用lambdas可以支持许多操作,如 map, filter, limit, sorted, count, min, max, sum, collect 等等。 
   Stream使用**懒运算**,他们并不会真正地读取所有数据,遇到像getFirst() 这样的方法就会结束**链式语法**。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值