1. 1 How You Make Me Feel 群星
  2. 2 That Girl Olly Murs
  3. 3 PLANET ラムジ
  4. 4 Es Rappelt Im Karton Pixie Paris
  5. 5 Take Me To Infinity Consoul Trainin
  6. 6 PDD洪荒之力 (纯音乐) Artists
  7. 7 沙漠骆驼 展展与罗罗
  8. 8 飘向北方 尤长靖&那吾克热
  9. 9 公路之歌 痛仰乐队
  10. 10 友谊之光 电影插曲
  11. 11 护花使者 李克勤
  12. 12 孙大剩 赵静&白亮
  13. 13 西海情歌 刀郎
  14. 14 给你们 张宇
How You Make Me Feel - 群星
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

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 国际 转载请保留原文链接及作者。

Powered By Valine
v1.5.2