728x90
반응형
firstOrNull
- Kotlin 컬렉션에서 사용되는 함수.
- 조건에 맞는 첫 번째 요소 반환 or 조건에 맞는 요소가 없을 경우 null 반환.
- Predicate 사용 가능: 람다를 전달하여 조건을 지정할 수 있음.
- 후속 처리를 위해 널 체크나 엘비스 연산자 (?:) 를 사용할 수 있음.
- 조건 없이 사용
val list = listOf(1, 2, 3) val first = list.firstOrNull() println(first) // 출력: 1
val emptyList = emptyList
val emptyFirst = emptyList.firstOrNull()
println(emptyFirst) // 출력: null
2. 조건과 함께 사용
```kotlin
val list = listOf(1, 2, 3, 4)
val evenNumber = list.firstOrNull { it % 2 == 0 }
println(evenNumber) // 출력: 2
val noMatch = list.firstOrNull { it > 10 }
println(noMatch) // 출력: null
firstOrNull vs first vs find
- first: 조건에 맞는 요소가 없으면 NoSuchElementException 예외 발생
- firstOrNull: 조건에 맞는 요소가 없으면 null 반환
val list = listOf(1, 2, 3) val result1 = list.first { it > 3 } // 예외 발생: NoSuchElementException val result2 = list.firstOrNull { it > 3 } // 반환값: null
- find: 조건에 맞는 요소가 없으면 null 반환
메서드 | 동작 방식 | 차이점 |
---|---|---|
firstOrNull {} |
리스트의 첫 번째 요소부터 순회하며 조건을 만족하는 첫 번째 요소를 반환 | 조건을 만족하는 첫 번째 요소를 찾으면 즉시 반환, 없으면 null |
find {} |
리스트의 모든 요소를 순회하며 조건을 만족하는 첫 번째 요소를 반환 | 사실상 firstOrNull 과 동일한 동작 (가독성 차이) |
Result
- Result -> success or failure
- 실패 상태를 반환하더라도 호출부에서 바로 예외를 발생시키지 않음.
- onFailure 블록이 실행되거나 호출부에서 추가적인 처리를 하지 않으면 아무 일도 일어나지 않고 넘어감.
val result = AService.findEmail(email) result.getOrThrow() // 실패 상태일 경우 예외를 발생시킴
- 하기 작성되어 있는 것처럼, onSuccess 로 추가적인 처리를 해주어야 예외가 호출됨.
AService .onSuccess { throw ServiceException(ErrorCode.EXCEPTION_TEST) }
728x90
반응형
'Blog > TIL' 카테고리의 다른 글
2025-01-20 (월) (1) | 2025.01.20 |
---|---|
2025-01-16 (목) (0) | 2025.01.16 |
2025-01-14 (화) (0) | 2025.01.14 |
2025-01-13 (월) (1) | 2025.01.13 |
2025-01-10 (금) (1) | 2025.01.10 |
댓글