类型不匹配推断类型是单位但预期为Void

时间:2017-10-26 03:35:58

标签: kotlin

带有字符串和侦听器(类似于swift中的闭包)参数的kotlin方法。

fun testA(str: String, listner: (lstr: String) -> Void) {

}

这样称呼它。

testA("hello") { lstr ->
    print(lstr)
}
  

错误:类型不匹配推断类型为单位但预计为Void

什么是单位?闭包的返回类型是Void。阅读很多其他问题,但可以通过这个简单的方法找到这里发生的事情。

3 个答案:

答案 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