더북(TheBook)

제네릭 확장 프로퍼티를 정의할 수도 있다. 다음은 ‘아톰 41, 제네릭스 소개’에서 본 firstOrNull() 함수를 프로퍼티로 다시 구현한 코드다.

ExtensionProperties/GenericListExt.kt

package extensionproperties
import atomictest.eq

val <T> List<T>.firstOrNull: T?
  get() = if (isEmpty()) null else this[0]

fun main() {
  listOf(1, 2, 3).firstOrNull eq 1
  listOf<String>().firstOrNull eq null
}

코틀린 스타일 가이드6는 함수가 예외를 던질 경우 프로퍼티보다는 함수를 사용하는 것을 권장한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.