我尝试在Kotlin中创建函数而不返回值。我编写了一个类似于Java的函数但使用Kotlin语法
fun hello(name: String): Void {
println("Hello $name");
}
我发现错误
错误:A'返回'具有a的函数中所需的表达式 阻止身体(' {...}')
经过几次修改后,我已经使用可空的Void作为返回类型。但这并不是我所需要的
fun hello(name: String): Void? {
println("Hello $name");
return null
}
根据Kotlin documentation单位类型对应于Java中的void类型。因此,在Kotlin中没有返回值的正确函数是
fun hello(name: String): Unit {
println("Hello $name");
}
或者
fun hello(name: String) {
println("Hello $name");
}
问题是:Void
在Kotlin中意味着什么,如何使用它以及这种用法的优势是什么?
答案 0 :(得分:19)
Void
是一个普通的Java类,在Kotlin中没有特殊含义。
您可以在Kotlin中使用Integer
,这是一个Java类(但应该使用Kotlin' s Int
)。你正确地提到了两种不返回任何东西的方法。所以,在Kotlin Void
是"某事"!
您收到的错误消息正好告诉您。您将(Java)类指定为返回类型,但您没有在块中使用return语句。
坚持这一点,如果你不想回报任何东西:
fun hello(name: String) {
println("Hello $name")
}
答案 1 :(得分:18)
Void
是Java中的一个对象,并且意味着什么都没有'。
在Kotlin,有一些专门的类型,没有':
Unit
- >替换java的void
Nothing
- > '一个永不存在的值' 现在在Kotlin中你可以引用Void
,就像你可以从Java引用任何类一样,但你真的不应该这样做。相反,请使用Unit
。另外,如果您返回Unit
,则可以省略它。