더북(TheBook)

2.7.4 확장 함수 사용하기

확장 함수(extension function)는 마치 클래스에 정의된 인스턴스 함수인 것처럼 객체를 호출할 수 있는 함수를 말한다. 코틀린에서는 확장 함수를 자주 사용한다. 예를 들어 리스트의 길이를 돌려주는 length라는 함수를 다음과 같이 정의하고 싶다고 해보자.

fun <T> length(list: List<T>) = list.size

물론 이 함수는 예제일 뿐, 전혀 쓸모가 없다. 코틀린에서는 이를 다음과 같이 정의할 수 있다.

fun <T> List<T>.length() = this.size

앞의 예제에서 length는 다음과 같이 인스턴스 함수처럼 사용하는 함수를 List 인터페이스에 추가한다. 그래서 이런 함수를 확장 함수라고 부른다.

fun <T> List<T>.length() = this.size

val ints = listOf(1, 2, 3, 4, 5, 6, 7)

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