dropLastWhile

dropwhile 의 반대. 뒤에서 부터 조건에 맞는 element 들을 drop 한다

public inline fun <T> List<T>.dropLastWhile(predicate: (T) -> Boolean): List<T> {
    if (!isEmpty()) {
        val iterator = listIterator(size)
        while (iterator.hasPrevious()) {
            if (!predicate(iterator.previous())) {
                return take(iterator.nextIndex() + 1)
            }
        }
    }
    return emptyList()
}

val list = listOf(1, 2, 3, 4, 5)
println(list.dropLastWhile{ it > 3 })  // [1, 2, 3]

Last updated