기존 클래스에 함수를 추가하는 것.
기존 클래스의 정의를 변경하지 않고도 클래스의 일부인 것처럼 메서드를 호출할 수 있게 해준다.
확장 함수를 선언하려면 함수 이름 앞에 수신 객체 타입(receiver type)을 붙인다.
fun 객체타입.함수이름(매개변수:매개변수타입 ...) : 반환타입 {
//실행할 코드
}
예시
MutableList<Int>에 swap 함수를 추가
fun MutableList<Int>.swap(index1: Int, index2: Int) {
val tmp = this[index1] // 'this'는 리스트를 가리킵니다.
this[index1] = this[index2]
this[index2] = tmp
}
val list = mutableListOf(1, 2, 3)
list.swap(0, 2) // 'swap()' 안의 'this'는 'list'를 가리킵니다.