在kotlin中的lamada使用场景简直太多了,但是可能是年龄大了吧,经常忘记,写一篇文章记录一下lambda的特性,以备遗忘。
什么是Lambda
通俗来讲,lambda是一小段可以作为参数传递的代码
Lambda的语法结构
{参数名1:参数类型,参数名2:参数类型 -> 函数体}
如果有参数传递给lambda,则需要在大括号内部声明参数列表,并在最后一个参数列表后面跟->
符号,表示参数的结束,以及函数体的开始。
我们平时大多数时候见到的lambda都不是长这个样子的,这些是因为Lambda的特性,对Lambda做了一些优化。
Lambda特性
我们通过下面的这段代码来一步步优化,来体会Lambda的特性
val list = listof("apple", "banana", "orange", "pear", "grape")
val maxLenthFruit = list.maxBy({fruit : Strintg -> fruit.lenth})
tips
:
maxBy函数用于根据传入的条件便利集合,从而找到该条件下的最大值
- 当Lambda参数是函数的最后一个参数,可以将Lambda表达式移动到函数括号的外面
val maxLenthFruit = list.maxBy(){fruit : Strintg -> fruit.lenth}
- 如果Lambda参数是函数的唯一一个参数,可以将函数的的括号省略
val maxLenthFruit = list.maxBy{fruit : String -> fruit.lenth}
- Lambda表达式中的参数类型,大多数时候不必声明参数类型
val maxLenthFruit = list.maxBy{fruit -> fruit.lenth}
- 当Lambda表达式中的参数列表只有一个参数时,不必声明参数,并且可以用
it
关键字来代替
val maxLenthFruit = list.maxBy{it.lenth }