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 }
}