1. 程式人生 > >Kotlin詳解:第二章,進階

Kotlin詳解:第二章,進階

一,高階函式

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基礎篇