高阶函数
所谓的高阶函数,是一种特殊的函数, 它接受函数作为参数, 或者返回一个函数.
fun test(a: Int, b: Int, sumSom: (Int, Int, Int) -> Int): Int {
if (a > b) {
return sumSom(0, a, 0)
} else {
return sumSom(0, b, 0)
}
}
tailrec fun sumSom(start: Int, end: Int, result: Int): Int {
var res = result
var sta = start
while (sta <= end) {
res += sta
sta++
}
return res
}
// 测试类
fun main(args: Array<String>) {
println(test(10, 9, ::sumSom)) // Log:55
}
命名参数
比如:
fun reformat(str: String,
normalizeCase: Boolean = true,
upperCaseFirstLetter: Boolean = true,
divideByCamelHumps: Boolean = false,
wordSeparator: Char = ' ') {
……
}
我们可以使用默认参数来调用它:(不用穿所有的参数)
reformat(str)
再也不用像java一样一个函数命名,多个不用的函数构造了,一个搞定
可变数量的参数(Varargs)
fun <T> asList(vararg ts: T): List<T> {
val result = ArrayList<T>()
for (t in ts) // ts is an Array
result.add(t)
return result
}
对比java的
private static int sumUp( int... values) {
}
网友评论