建设科技网络网站的意义和目的,百度收录量,微信公众号网页制作,福步外贸论坛登录Lambda 就是一小段可以作为参数传递的代码。 因为正常情况下#xff0c;我们向某个函数传参时只能传入变量#xff0c;而借助Lambda 却允许传入一小段代码。
Lambda 表达式的语法结构#xff1a;
{参数名1: 参数类型, 参数名2: 参数类型 - 函数体}首先#xff0c;最外… Lambda 就是一小段可以作为参数传递的代码。 因为正常情况下我们向某个函数传参时只能传入变量而借助Lambda 却允许传入一小段代码。
Lambda 表达式的语法结构
{参数名1: 参数类型, 参数名2: 参数类型 - 函数体}首先最外层是一对大括号。
如果有参数传入到 Lambda 表达式中的话我们还需要声明参数列表参数列表的结尾使用一个-符号表示参数列表的结束以及函数体的开始。
函数体中可以编写任意行代码(虽然不建议编写太长的代码)并且最后一行代码会自动作为Lambda 表达式的返回值。
{参数名1: 参数类型, 参数名2: 参数类型-函数体
}例子
val list listOf(Apple, Banana, Orange, Pear, Grape, Watermelon) val lambda { fruit: String - fruit.length }
val maxLengthFruit list.maxBy(lambda)maxBy就是一个普通的函数而已只不过它接收的是一个Lambda 类型的参数并且会在遍历集合时将每次遍历的值作为参数传递给Lambda 表达式。工作原理是根据我们传入的条件来遍历集合从而找到该条件下的最大值比如说想要找到单词最长的水果 那么条件自然就应该是单词的长度了。
所以人话是maxBy遍历集合list将item作为“参数”传入Lambda表达式。条件是fruit.length
简化过程
// 不需要专门定义一个lambda变量
val maxLengthFruit list.maxBy({ fruit: String - fruit.length })// 当Lambda 参数是函数的最后一个参数时可以将Lambda 表达式移到函数括号的外面
val maxLengthFruit list.maxBy() { fruit: String - fruit.length }// 如果Lambda 参数是函数的唯一一个参数的话还可以将函数的括号省略
val maxLengthFruit list.maxBy { fruit: String - fruit.length }// 由于Kotlin拥有出色的类型推导机制Lambda 表达式中的参数列表其实在大多数情况下不必声明参数类型
val maxLengthFruit list.maxBy { fruit - fruit.length }// 当Lambda 表达式的参数列表中只有一个参数时也不必声明参数名而是可以使用it 关键字来代替
val maxLengthFruit list.maxBy { it.length }