版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wang_yong_hui_1234/article/details/78470419
一,高阶函数
1,基本概念:将函数作为参数或返回一个函数,称为高阶函数,常用的高阶函数如下。
①,forEach函数,用于遍历集合
fun main(args: Array<String>): Unit {
val list : List<String> = listOf(
"red",
"orange",
"yellow",
"gree",
"blue"
)
//这里的两个冒号是引用函数的意思
list.forEach(::println)
}
②,map函数,集合映射
fun main(args: Array<String>): Unit {
val list : List<String> = listOf(
"red",
"orange",
"yellow",
"gree",
"blue"
)
var newMap=list.map { it+",hello" }
newMap.forEach(::println)
}
③,flatMap函数,把集合的集合扁平化成集合
fun main(args: Array<String>): Unit {
val list = listOf(
1..5,
3..15,
8..20
)
val newList = list.flatMap {
it
}
newList.forEach(::println)
}
④,reduce函数,用于求和
//示例1 求1到5的和
fun main(args: Array<String>): Unit {
val list = listOf(1, 2, 3, 4, 5)
var sum = list.reduce { acc, i -> acc + i }
println(sum)
}
//示例2
fun main(args: Array<String>): Unit {
(1..8).map(::factorial).forEach(::println)
}
//求n的阶乘:n!=1×2×3×...×n
fun factorial(n: Int): Int {
if (n == 0) {
return 1
} else {
return (1..n).reduce { acc, i -> acc * i }
}
}
⑤,filter数据过滤
//还是示例2的代码,要求只保留奇数,过滤掉其他
println((0..8).map(::factorial).filter { it%2==1 })
二,协程
1,基本概念:协作程序,解决异步问题。
2,协程与线程的区别:协程是通过编译技术实现(不需要虚拟机VM/操作系统OS的支持),通过插入相关代码来生效!与之相反,线程/进程是需要虚拟机VM/操作系统OS的支持,通过调度CPU执行生效!
上一篇:kotlin基础篇