본문 바로가기
Language/Kotlin

Kotlin의 `any` 함수란?

by 시니성 2023. 9. 15.

Kotlin에서의 any 함수는 컬렉션에 대해 사용되며, 컬렉션 내의 원소 중 하나라도 주어진 조건을 만족하면 true를, 그렇지 않으면 false를 반환합니다.

함수의 정의:

public inline fun <T> Iterable<T>.any(predicate: (T) -> Boolean): Boolean
  • T는 컬렉션의 원소 타입을 의미합니다.
  • predicate는 각 원소에 대해 실행될 함수로, 조건을 만족하면 true를, 그렇지 않으면 false를 반환합니다.

유용한 사용 시나리오:

상품 리스트가 있고, 이 중에 특정 조건을 만족하는 상품이 하나라도 있는지를 확인하는 상황을 생각해봅시다. 예를 들면, 재고가 없는 상품이 하나라도 있는지, 특정 가격 이상의 상품이 있는지 등의 조건을 검사할 때 any 함수를 유용하게 사용할 수 있습니다.

예시 코드:

data class Product(val name: String, val price: Double, val inStock: Boolean)

fun main() {
    val products = listOf(
        Product("Laptop", 1200.0, true),
        Product("Mouse", 15.0, true),
        Product("Keyboard", 50.0, false)
    )

    // 재고가 없는 상품이 하나라도 있는지 확인
    val hasOutOfStockProduct = products.any { !it.inStock }
    println("Is there any product out of stock? $hasOutOfStockProduct")  // 출력: Is there any product out of stock? true

    // 가격이 $100 이상인 상품이 하나라도 있는지 확인
    val hasExpensiveProduct = products.any { it.price >= 100 }
    println("Is there any product priced over $100? $hasExpensiveProduct")  // 출력: Is there any product priced over $100? true
}

코드 설명:

  • Product 데이터 클래스는 상품을 나타내며, name (이름), price (가격), inStock (재고 유무) 프로퍼티를 가지고 있습니다.
  • products 리스트에는 3개의 상품 샘플이 포함되어 있습니다.
  • 첫 번째 any 함수는 inStock 프로퍼티가 false인 상품, 즉 재고가 없는 상품이 있는지를 확인합니다.
  • 두 번째 any 함수는 price 프로퍼티가 $100 이상인 상품이 있는지를 확인합니다.

이처럼 Kotlin의 any 함수는 간단하게 컬렉션 내의 원소 중에서 특정 조건을 만족하는 것이 하나라도 있는지를 빠르게 확인할 때 유용합니다.

728x90