Kotlin高階函式講解
阿新 • • 發佈:2019-02-07
Kotlin的高階函式有很多;常用的有:forEach、map、flatMap、fold、reduce、filter、takeWhile、let、apply、use等;
下面就用程式碼給大家展示一下:
fun main(args: Array<String>) {
val list= listOf(
1..20,
2..5,
100..322
)
val faltlist=list.flatMap {it}
// 輸出結果
faltlist.forEach (::println )
// 輸出求list裡面的總和
println(faltlist.reduce { acc, i -> acc + i })
// 呼叫下面求階乘的方法0到6的階乘
(0..6).map(::factorial).forEach (::println)
// 得到階乘以後我們還想求和
println("階乘的結果為:"+(0..6).map(::factorial).reduce { acc, i -> acc + i })
// 要是我們還想加個初始值的話就要用一個新的高階函式識別符號了
println("添加了一個初始值後在想加集合:"+(0..6 ).map(::factorial).fold(5){acc, i -> acc + i})
// 用fola這個識別符號還可以拼接字串
println("拼接的結果為:"+(0..6).map(::factorial).fold(StringBuilder()){
acc, i -> acc.append(i).append(",")
})
// 還有一個是foldRight就是倒序的顯示出來
println("倒序的結果為:"+(0..6).map(::factorial).foldRight(StringBuilder()){
i,acc -> acc.append(i).append(",")
})
// 遇到我們的判斷條件就讓它停下來的函式
println( "遇到第一個符合條件的把前面的留下後面的不要:"+(0..6).map(::factorial).takeWhile {it % 2==1})
//還有一個高階函式是拿到集合的基數
println("求的基數為:"+(0..6).map(::factorial).filter{it % 2 ==1})
// 連線字串還可以更簡單
println("拼接字串為:"+(0..8).joinToString(","))
}
//定義求階乘的函式
fun factorial(n:Int):Int{
if (n==0)return 1
return (1..n).reduce { acc, i -> acc * i }
}