Cómo convertir la salida de la función a la Unidad con Kotlin

Tengo problemas con una función en Kotlin que debería devolver Unit, pero debido al uso de otra función que devuelve un Boolean, hay una falta de coincidencia de tipos.

Aquí hay un ejemplo artificial:

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

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

Aquí, en realidad no me importa el hecho de queprintAndReturnTrue devuelve un booleano. Solo quiero que foo realice operaciones de efectos secundarios. Pero el compilador advierte sobre una falta de coincidencia de tipos: mielse debería devolver unUnit valor.

¿Hay una buena manera de convertir un valor aUnit?

Las soluciones más simples que veo son:

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

o:

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

fun eraseReturnValue(value: Any) = Unit

O uso el formulario de función completo:

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

Estoy seguro de que hay algunas formas idiomáticas de hacerlo (¿o es el último ejemplo?), Pero por ahora no las encontré.

Respuestas a la pregunta(4)

Su respuesta a la pregunta