Kotlin-函数式编程
Kotlin语言支持把函数当作参数进行传递。下面写一种简单的使用代码
// 声明一个函数
var funParams = fun(name: String) {
println(name)
}
fun main() {
//定义一个字符串数组
var names = listOf("a", "bb", "cc", "ddd")
// //函数式编程 简写
// names.forEach{
// name->
// println(name)
// }
// //函数式编程 快捷默认“it”对象
// names.forEach{
// println(it)
// }
//函数式编程 将一个函数当作参数传递
names.forEach(funParams)
}
Kotlin-高阶函数
首先定义一个对象,用来演示高阶函数如何使用
class Student(var idNumber: String, var name: String, var age: Int){
fun say(){
println("$name 同学会说话")
}
}
然后就是关于集合的一些高阶函数如何使用。
这些都是相当于开发语言的人提前定义了一些快捷语法糖,供程序员使用。
maxByOrNull ,minByOrNull ,filter ,map ,any ,count ,find ,groupBy
fun main(){
var students = ArrayList<Student>()
for (i in 1..10) {
students.add(Student("id$i", "姓名$i", i))
}
for (i in 1..10) {
students.add(Student("id$i", "姓名1$i", i ))
}
//查找某个属性最大的一个数据,默认返回找到的第一个符合条件的数据
println(students.maxByOrNull { it.age })
//查找某个属性最小的一个数据,默认返回找到的第一个符合条件的数据
println(students.minByOrNull { it.age })
//过滤函数,查找指定条件下的数据
println(students.filter { it.age == 2 && it.age == 2 })
//map 返回一个新的数组
println(students.map { "${it.name} : ${it.age}" })
//判断是否包含符合某个条件的数据
println(students.any { it.age == 5 })
//返回符合条件的数据有多少个
println(students.count { it.age == 6 })
//find 函数会返回找到的第一个符合条件的数据
println(students.find { it.age == 7 })
//groupBy 会按照某个条件分组
println(students.groupBy { it.age })
//因为groupBy返回的是一个map集合,所以可以用get方法查询某个分组
students.groupBy { it.age }.get(4)?.forEach { println(it) }
}