Стандартная библиотека Kotlin не предлагает то, что вы ищете, но вы можете создать что-то, что вы ищете, самостоятельно:
fun repeatWhile(condition: () -> Boolean, action: () -> Unit): Int {
var count = 0
while (condition()) {
action()
count++
}
return count
}
И использовать это так:
val stack = Stack<Int>()
stack.push(1)
stack.push(2)
stack.push(3)
val count = repeatWhile({ stack.isNotEmpty() }) {
stack.pop()
}
println(count) // 3
Лично я не думаю, что это лучше, чем выставить while-l oop и переменную counter на сайт вызова, как вы сделали в своем вопросе.