一、Filter
package net.println.kotlin.chapter5.builtins
/**
* @author:wangdong
* @description:Kotlin常见的高阶函数
*/
fun main(args: Array<String>) {
//求(0..6)的阶乘
(0..6).map(::factorial).forEach(::println)
//阶乘过滤,只要阶乘是奇数的
//public inline fun <T> Iterable<T>.filter(predicate: (T) -> Boolean): List<T> {
// return filterTo(ArrayList<T>(), predicate)
//}
println((0..6).map(::factorial).filter { it % 2 == 1 }) //[1, 1]
//要处于奇数位上的阶乘
println((0..6).map(::factorial).filterIndexed{ index, i -> index % 2 == 1 }) //[1, 6, 120]
}
/**reduce求阶乘*/
//一个正整数的阶乘(英语:factorial)是所有小于及等于该数的正整数的积,并且有0的阶乘为1。 自然数n的阶乘写作n!。
//例如3的阶乘:1*2*3 = 6
fun factorial(n: Int): Int{
if (n == 0)return 1
//如果n >0,本次的acc*下一次的acc
return (1..n).reduce{acc,i -> acc * i}
}
二、TakeWhile
package net.println.kotlin.chapter5.builtins
/**
* @author:wangdong
* @description:Kotlin常见的高阶函数
*/
fun main(args: Array<String>) {
//求(0..6)的阶乘
(0.