목차로 돌아가기
목표
- forEach를 이해한다.
- forEach를 자유롭게 사용하여 데이터를 조작한다.
forEach()
개요
forEach는 순서가 있는 데이터(CharSequence, Iterable 등)에 대한 확장함수로, 기존의 for문을 사용하던 외부 반복(Iteration)에서 내부 반복(Iteration)으로 바꿔줄 수 있게 하여 가독성을 좋게 만든 확장 함수입니다.
외부 반복이란 다음과 같이 외부에서 반복하는 것을 말합니다.
val exampleList = mutableListOf(1, 2, 3)
for (number in exampleList) {
print(number)
}
만약 이 코드를 forEach를 이용하여 내부반복으로 바꾼다면 다음과 같이 바뀌게 됩니다.
val exampleList = mutableListOf(1, 2, 3)
exampleList.forEach { print(it) }
확실히 가독성이 좋아진 것을 확인할 수 있습니다.
정의
public inline fun <T> Iterable<T>.forEach(action: (T) -> Unit): Unit
forEach는 Iterable에 대한 반복(iteration)을 돌리면서 각 원소에 대해 입력값으로 받은 action을 수행하도록 만드는 확장함수입니다. 이때 action을 T 타입의 인자를 받아 처리하고 Unit을 return 하는 함수입니다.
작동방식
다음은 exampleList에 대해 forEach 연산을 수행하는 코드입니다.
val exampleList = mutableListOf(1, 2, 3)
exampleList.forEach { print(it) }
위의 연산은 다음의 순서로 수행됩니다.
1. print(1) // Unit 반환
2. print(2) // Unit 반환
3. print(3) // Unit 반환
꼭 이렇게 써야만 하는 것은 아니고, 다음과 같이 action을 정의해서 써도 괜찮습니다.
val exampleList = mutableListOf(1, 2, 3)
val action = { value: Int -> print(value) }
exampleList.forEach(action)
반응형