【发布时间】:2018-05-02 21:55:49
【问题描述】:
我只是从 kotlin 开始,所以,如果这是一个基本问题,请原谅我,我确实做了一些谷歌搜索,但这并没有发现任何有用的东西。
问题是如何将值转换为Unit。
例如,在 scala 中,如果我这样写:
def foo: Int = ???
def bar(x: String): Unit = x match {
case "error" => println("There was an error")
case _ => foo
}
match表达式的返回类型为Any,但被编译器丢弃,函数返回Unit。
但是在 kotlin 中做这样的事情:
fun bar(x: String): Unit = when(x) {
"error" -> println("There was an error")
else -> foo()
}
它抱怨foo 部分:inferred type is Int but Unit was expected
我知道,在这种情况下,我可以摆脱=,而是将主体放在一个块内,这可行,但我正在寻找一个通用的解决方案。到目前为止我能得到的只是foo.let {},但它似乎有点笨拙,特别是如果有很多这样的情况需要完成的话。
【问题讨论】:
标签: kotlin