相关疑难解决方法(0)

如何使用Kotlin将函数输出转换为Unit

我在Kotlin中有一个应该返回Unit的函数有麻烦,但是由于使用了另一个返回布尔值的函数,所以存在类型不匹配.

这是一个人为的例子:

fun printAndReturnTrue(bar: Int): Boolean {
    println(bar)
    return true
}

fun foo(bar: Int): Unit = when(bar) {
    0 -> println("0")
    else -> printAndReturnTrue(bar)
}
Run Code Online (Sandbox Code Playgroud)

在这里,我实际上并不关心printAndReturnTrue返回布尔值的事实.我只想让foo执行副作用操作.但编译器警告类型不匹配:我else应该返回一个Unit值.

有没有一种很好的方法将值转换为Unit

我看到的最简单的解决方案是:

fun foo(bar: Int): Unit = when(bar) {
    0 -> println("0")
    else -> { 
        printAndReturnTrue(bar)
        Unit
    }
}
Run Code Online (Sandbox Code Playgroud)

要么:

fun foo(bar: Int): Unit = when(bar) {
    0 -> println("0")
    else -> eraseReturnValue(printAndReturnTrue(bar))
}

fun eraseReturnValue(value: Any) = Unit
Run Code Online (Sandbox Code Playgroud)

或者我使用完整的函数形式:

fun foo(bar: Int): Unit { 
    when(bar) …
Run Code Online (Sandbox Code Playgroud)

return function kotlin

5
推荐指数
1
解决办法
1072
查看次数

标签 统计

function ×1

kotlin ×1

return ×1