gpt4 book ai didi

kotlin - 丢弃返回值以返回单位?

转载 作者:行者123 更新时间:2023-12-04 23:14:10 25 4
gpt4 key购买 nike

我刚开始使用 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 {} ,但看起来有点笨拙,特别是如果有很多这样的情况需要完成。

最佳答案

您可以 create an extension method on Any object and call it .我只是更喜欢使用名称 discard()而不是 toUnit() ,因为我觉得它传达了更好的意图:

fun Any?.discard() = Unit

fun foo(): Int = 3

fun bar(x: String): Unit = when (x) {
"error" -> println("There was an error")
else -> foo().discard()
}

关于kotlin - 丢弃返回值以返回单位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47379165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com