带有字符串和侦听器(类似于swift中的闭包)参数的kotlin方法。
fun testA(str: String, listner: (lstr: String) -> Void) {
}
这样称呼它。
testA("hello") { lstr ->
print(lstr)
}
错误:类型不匹配推断类型为单位但预计为Void
什么是单位?闭包的返回类型是Void
。阅读很多其他问题,但可以通过这个简单的方法找到这里发生的事情。
答案 0 :(得分:2)
Kotlin使用Unit
用于不返回Void
的方法。它应该工作
fun testA(str: String, listner: (lstr: String) -> Unit) {
}
答案 1 :(得分:2)
根据 Kotlin文档单元类型对应于Java中的void类型。因此,在Kotlin中没有返回值的正确函数是
--dry-run
或者什么都不用
fun hello(name: String): Unit {
println("Hello $name");
}
答案 2 :(得分:2)
如果你做需要Void
(它很少有用,但可能与Java代码互操作时),你需要返回null
因为{{ 1}}被定义为没有实例(与Scala / Kotlin Void
形成对比,后者只有一个):
Unit