Como converter saída de função em Unidade com Kotlin

Tenho problemas com uma função no Kotlin que deve retornar a unidade, mas devido ao uso de outra função retornando um booleano, há uma incompatibilidade de tipo.

Aqui está um exemplo artificial:

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

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

Aqui, eu realmente não me importo com o fato de queprintAndReturnTrue retorna um booleano. Eu só quero que foo realize operações de efeito colateral. Mas o compilador adverte sobre uma incompatibilidade de tipos: meuelse deve retornar umUnit valor.

Existe uma boa maneira de converter um valor paraUnit?

As soluções mais simples que vejo são:

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

ou:

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

fun eraseReturnValue(value: Any) = Unit

Ou eu uso o formulário completo da função:

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

Estou certo de que existem algumas maneiras idiomáticas de fazer isso (ou é o último exemplo?), Mas por enquanto não as encontrei.

questionAnswers(4)

yourAnswerToTheQuestion