【问题标题】:What does Void return type mean in KotlinKotlin 中的 Void 返回类型是什么意思
【发布时间】:2017-12-03 17:38:49
【问题描述】:

我试图在 Kotlin 中创建函数而不返回值。我写了一个类似 Java 的函数,但使用 Kotlin 语法

fun hello(name: String): Void {
    println("Hello $name");
}

我有一个错误

错误:函数中需要一个“返回”表达式 块体('{...}')

经过几次更改后,我得到了可以为空的 Void 作为返回类型的工作函数。但这并不是我所需要的

fun hello(name: String): Void? {
    println("Hello $name");
    return null
}

根据Kotlin documentationUnit类型对应Java中的void类型。所以在 Kotlin 中没有返回值的正确函数是

fun hello(name: String): Unit {
    println("Hello $name");
}

或者

fun hello(name: String) {
    println("Hello $name");
}

问题是:Void 在 Kotlin 中是什么意思,如何使用,这样使用有什么好处?

【问题讨论】:

标签: java kotlin void return-type


【解决方案1】:

Void 是一个普通的 Java 类,在 Kotlin 中没有特殊含义。

您可以在 Kotlin 中使用 Integer 的相同方式,它是一个 Java 类(但应该使用 Kotlin 的 Int)。你正确地提到了不返回任何东西的两种方法。所以,在 Kotlin 中 Void 是“某物”!

您收到的错误消息准确地告诉了您。您将 (Java) 类指定为返回类型,但未在块中使用 return 语句。

坚持这个,如果你不想退货:

fun hello(name: String) {
    println("Hello $name")
}

【讨论】:

    【解决方案2】:

    Void 是 Java 中的一个对象,其含义与“无”一样多。
    在 Kotlin 中,“无”有专门的类型:

    • Unit -> 替换 java 的 void
    • Nothing -> '一个永远不存在的值'

    现在在 Kotlin 中,您可以引用 Void,就像您可以引用 Java 中的任何类一样,但您确实不应该这样做。相反,请使用Unit。另外,如果返回Unit,可以省略。

    【讨论】:

    • Void(实际上是:java.lang.Void)不是 object,它是 Java 中的 class。您不能创建此类的实例。
    • @Jesper 你可以返回null
    猜你喜欢
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 2013-06-20
    相关资源
    最近更新 更多