kotlin学习(五)-高阶函数

  kotlin的高阶函数是指将函数作为参数或返回值的函数

  • 将函数作为参数的高阶函数
    看一下sumBy{}源码:

    1
    2
    3
    4
    5
    6
    7
    public inline fun CharSequence.sumBy(selector: (Char) -> Int): Int {
    var sum: Int = 0
    for (element in this) {
    sum += selector(element)
    }
    return sum
    }

    sumBy的使用案例:

    1
    2
    3
    val testStr = "abc"
    val sum = testStr.sumBy { it.toInt() }
    println(sum)

    执行结果为:294
    备注一下:kotlin官方给出的建议:当高阶函数的参数只有一个函数且这个函数为lambda表达式时,调用高阶函数可以省去(),所以直接函数名后跟上lambda表达式{ it.toInt() },还有一个约定,即当函数的最后一个参数是一个lambda表达式,则可以在圆括号之外定义它。

  • 函数作为返回值的高阶函数
    这里可以用闭包的例子来说明

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    fun test(b : Int): () -> Int{
    var a = 3
    return fun() : Int{
    a++
    return a + b
    }
    }

    val t = test(3)
    println(t())
    println(t())
    println(t())

    输出结果为:

    1
    2
    3
    7
    8
    9
-------------本文结束感谢您的阅读-------------

本文标题:kotlin学习(五)-高阶函数

文章作者:fengxi

发布时间:2019年02月14日 - 11:02

最后更新:2019年04月04日 - 21:04

原始链接:https://super-storm.github.io/2019/02/14/kotlin学习(五)-高阶函数/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。