带有字符串和侦听器(类似于swift中的闭包)参数的kotlin方法.
fun testA(str: String, listner: (lstr: String) -> Void) {
}
Run Code Online (Sandbox Code Playgroud)
像这样称呼它.
testA("hello") { lstr ->
print(lstr)
}
Run Code Online (Sandbox Code Playgroud)
错误:类型不匹配推断类型为单位但预期为Void
什么是单位?闭包的返回类型是Void.阅读很多其他问题,但可以通过这个简单的方法找到这里发生的事情.
如果您确实需要Void(它很少有用,但在与 Java 代码互操作时可能有用),您需要返回,null因为Void被定义为没有实例(与 Scala/Kotlin 相比Unit,它只有一个):
fun testA(str: String, listner: java.util.function.Function<String, Void?>) {
...
}
testA(("hello") { lstr ->
print(lstr)
null
}
Run Code Online (Sandbox Code Playgroud)
根据Kotlin 文档,单元类型对应于 Java 中的 void 类型。所以在 Kotlin 中没有返回值的正确函数是
fun hello(name: String): Unit {
println("Hello $name")
}
Run Code Online (Sandbox Code Playgroud)
或者什么都不用
fun hello(name: String) {
println("Hello $name")
}
Run Code Online (Sandbox Code Playgroud)
这
| 归档时间: |
|
| 查看次数: |
8586 次 |
| 最近记录: |