Kotlin详解:第二章,进阶

版权声明:本文为博主原创文章,未经博主允许不得转载。 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基础篇

猜你喜欢

转载自blog.csdn.net/wang_yong_hui_1234/article/details/78470419