Kotlin:将函数作为参数传递

2016-09-02  本文已影响7323人  _10_01_

Kotlin是一门与Swift类似的静态类型JVM语言,由JetBrains设计开发并开源。与Java相比,Kotlin的语法更简洁、更具表达性,而且提供了更多的特性,比如,高阶函数、操作符重载、字符串模板。它与Java高度可互操作,可以同时用在一个项目中。InfoQ
高阶函数就是可以接受函数作为参数并返回一个函数的函数。Kotlin-in-Chinese

Kotlin 支持函数作为参数传递,无需构建对象来包装函数。

无参数函数调用

class Hello {

    fun say() {
        Timber.i("Hello World")
    }

    /**
    * 在 Kotlin 中无返回为 Unit
    *
    * 此方法接收一个无参数的函数并且无返回
    *
    * 使用参数名加 () 来调用
    */
    fun people(hello: () -> Unit) {
        hello()
    }

    /**
    * 在 kotlin 中有一个约定,如果最后一个参数是函数,可以省略括号
    */
    fun main() {
        people ({ say() })
        people { say() }
    }

}

** 调用函数需使用参数名加 () **

Kotlin function no parameter.png

有参数函数调用

class Hello {

    fun say(msg: String) {
        Timber.i("Hello $msg")
    }

    /**
    * 当调用的函数有形参时,
    * 需要在调用的函数声明,并使用声明的形参;
    * 函数参数中的形参无法使用
    */
    fun people(arg0: String, hello: (arg1: String) -> Unit) {
        hello(arg0)
        // hello(arg1) 这样调用将报错
    }

    fun main() {
        people("Android") { say("World") }
    }

}
Kotlin function parameter.png

传入给 arg0 的值貌似未生效 ** ??? **

上一篇 下一篇

猜你喜欢

热点阅读