Kotlin은 다양한 기능을 제공하여 개발자의 생산성을 향상시키며, 그 중에서도 기본 인자 값과 널 허용성은 특히 주목받는 특징 중 하나입니다. 하지만 이 두 특징을 함께 사용할 때 주의해야 할 점이 있습니다.
기본 인자 값
Kotlin 함수나 클래스의 생성자에는 기본 인자 값을 제공할 수 있습니다. 이를 통해 호출자가 특정 인자를 생략하면 기본 값이 사용됩니다.
예를 들어, 아래의 Greeting
클래스에서 message
매개변수에 기본 값 "Hello"가 지정되어 있습니다.
data class Greeting(val message: String = "Hello")
println(Greeting()) // 출력: Greeting(message=Hello)
널 허용성
Kotlin은 널 허용성을 명시적으로 지정할 수 있게 해서 NullPointerException
을 방지하는 방법을 제공합니다. ?
를 타입 뒤에 붙이면 해당 타입의 변수는 null
값을 가질 수 있게 됩니다.
조심해야 할 부분
기본 인자 값과 널 허용성을 함께 사용할 때 주의해야 할 점이 있습니다.
data class StoreFunSetM(val cupUseYn: String? = "Y")
이 경우, StoreFunSetM
클래스를 생성할 때 cupUseYn
매개변수를 생략하거나 "Y"로 명시적으로 전달하면 기본값 "Y"가 할당됩니다. 그러나 null
을 전달하면 명시적으로 null
값이 할당됩니다.
StoreFunSetM("Y") // => cupUseYn = "Y"
StoreFunSetM() // => cupUseYn = "Y"
StoreFunSetM(null) // => cupUseYn = null
이처럼, 기본 인자 값이 있는 널 허용 매개변수에 null
을 전달하면 기본값 대신 null
이 할당됩니다.
추가적인 가상 시나리오
상품 정보를 나타내는 Product
클래스가 있다고 가정해봅시다.
data class Product(val name: String, val price: Double? = 0.0)
이 경우, price
는 기본값으로 0.0을 가집니다.
Product("Book") // => Product(name=Book, price=0.0)
Product("Pen", 1.5) // => Product(name=Pen, price=1.5)
Product("Note", null) // => Product(name=Note, price=null)
위의 예에서 볼 수 있듯이, 기본값이 있는 널 허용성 변수에 null
을 전달하면 기본값 대신 null
이 할당됩니다.
결론
Kotlin의 기본 인자 값과 널 허용성은 강력한 기능입니다. 그러나 이 두 특징을 함께 사용할 때는 주의가 필요합니다. 기본값을 제공하는 널 허용 변수에 null
을 전달하면 기본값이 아닌 null
이 할당될 수 있기 때문입니다.
'Language > Kotlin' 카테고리의 다른 글
Event Sourcing을 통한 함수형 프로그래밍의 적용 (0) | 2023.10.13 |
---|---|
코틀린에서의 `reduce` (0) | 2023.10.13 |
Kotlin Companion Object에 대해 (0) | 2023.09.20 |
Kotlin의 'All' 함수에 대해 (0) | 2023.09.15 |
Kotlin의 `any` 함수란? (0) | 2023.09.15 |