take

drop 과 반대의 역할. drop 이 앞에서 부터 n 개를 떨어뜨린 값을 준다면, take 는 앞에서 부터 n 개를 취한 값을 준다

public fun Iterable<T>.take(n: Int): List<T> {
    require(n >= 0) { "Requested element count $n is less than zero." }
    if (n == 0) return emptyList()
    if (this is Collection<T>) {
        if (n >= size) return toList()
        if (n == 1) return listOf(first())
    }
    var count = 0
    val list = ArrayList<T>()
    for (item in this) {
        if (count++ == n)
            break
        list.add(item)
    }
    return list.optimizeReadOnlyList()
}


val list = listOf(1, 2, 3, 4, 5)
println(list.take(3))  // [1, 2, 3]

Last updated