Я пытался сделать рекурсию с «когда» в Kotlin, и действительно, это работает, но это также дает мне некоторые странные выходные данные с типом void, известным в Kotlin как Unit, как это происходит, когда «когда» Скажите работа? Должно ли оно что-то возвращать?
fun pick(camara: Boolean, klinga: Boolean){
when {
camara -> println("KLINGA")
klinga -> println("CAMARA")
else -> println(pick(Random.nextBoolean(), Random.nextBoolean()))
}
}
pick(false, false)
возвращает:
CAMARA
kotlin.Unit
kotlin.Unit
kotlin.Unit
Рекурсия выполнена правильно, но также выводит пустые данные (вероятно, соответствующие количеству рекурсивных вызовов)
Итак, вопрос в том, почему появляется такой вид вывода? Это потому, что «когда» возвращает возвращаемое значение вызова функции? В этом случае Единица?