《Kotlin 实战》- 5 Lambda 编程

2019-07-12  本文已影响0人  Ronnie_火老师

5.1 Lambda 表达式和成员引用

button.setOnClickListener {/* 点击后的执行动作 */} // 注意是大括号
// 前期准备
 val people = listOf(Person("Alice", 29), Person("Bob", 31))
 // maxBy 方法的系统声明
 fun <T, R : Comparable<R>> Iterable<T>.maxBy(selector: (T) -> R): T? 
// 原始方式
people.maxBy({ p: Person -> p.age })
// lambda 表达式是函数调用的最后一个实参,可放到括号外面
people.maxBy(){ p: Person -> p.age }
// lambda 是函数唯一实参,可以去掉空括号对
people.maxBy { p: Person -> p.age }
// 与局部变量一样,如果 lambda 参数类型可以被推到,就可以省略类型
// 也存在不能被推到的情况,可以遵循这样的规则:先不声明类型,编译器报错后再声明
people.maxBy {p -> p.age}
// 当只有一个参数并且参数类型可以推导,就可以使用默认参数名称 it 代替命名参数
people.maxBy { it.age }

5.2 集合的函数式API

5.3 惰性集合操作:序列

5.4 使用 Java 函数式接口

5.5 带接收者的 lambda:with 与 apply

5.6 小结

上一篇 下一篇

猜你喜欢

热点阅读