Kotlin:将函数作为参数传递

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() }
    }

}

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

 

有参数函数调用

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") }
    }

}

 

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

  • @param arg0 实参
  • @param arg1 形参
    people函数中,arg0 是实参,而 arg1 是形参,所以不能直接使用;
    有点绕 😂 ,可以看下这篇博文 Kotlin 双冒号 :: 使用



作者:_10_01_
链接:https://www.jianshu.com/p/c69f7ce88784
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值