点击领取优惠~
291 字
1 分钟
Unit与void的区别
在Kotlin中,如果一个方法没有声明返回类型,那么它的返回类型会被默认设置为Unit,但是Unit并不等同于Java中的void关键字,void代表没有返回值,而Unit是有返回值的,如下
fun main() { val foo = foo() println(foo.javaClass)}
fun foo() {
}
// 输出结果:class kotlin.Unit继续跟进下看看Unit的实现
public object Unit { override fun toString() = "kotlin.Unit"}在Kotlin中是函数作为一等公民,而不是对象。这一个特性就决定了它可以使用函数进行传递和返回。因此,Kotlin中的高阶函数应用就很广。高阶函数至少就需要一个函数作为参数,或者返回一个函数。如果我们没有在明明函数声明中明确的指定返回类型,或者没有在Lambda函数中明确返回任何内容,它就会返回Unit。 比如 如下实现实际是相同的
fun funcionNoReturnAnything(){
}fun funcionNoReturnAnything():Unit{
}或者是在lambda函数体中最后一个值会作为返回值返回,如果没有明确返回,就会默认返回Unit
view.setOnclickListener{
}view.setOnclickListener{ Unit} Unit与void的区别