Kotlin詳解:第二章,進階
阿新 • • 發佈:2018-12-22
一,高階函式
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基礎篇