[kotlin] 코틀린 확장 함수와 일반 함수의 차이점은 무엇인가요?

코틀린에서는 확장 함수와 일반 함수가 각각 다른 방식으로 동작하며 특별한 용도로 사용됩니다. 확장 함수와 일반 함수의 주요 차이점은 다음과 같습니다:

확장 함수 (Extension Functions)

확장 함수는 기존 클래스에 새로운 함수를 추가하는 방법으로 활용됩니다. 이를 통해 기존 클래스의 메서드를 직접 수정하지 않고도 새로운 동작을 추가할 수 있습니다. 즉, 기존 클래스의 멤버 메서드처럼 호출할 수 있지만 클래스의 소스 코드를 변경할 필요가 없는 함수입니다.

fun String.addExclamation(): String {
    return "$this!"
}

val result = "Hello".addExclamation() // "Hello!"

위의 예제에서 addExclamation() 함수는 String 클래스에 새로운 기능을 추가하는 확장 함수입니다.

일반 함수 (Regular Functions)

일반 함수는 관련이 있는 코드 블록을 하나로 묶어 재사용 가능한 코드 단위로 만들어주는데 사용됩니다. 일반 함수는 클래스의 범위 내에 작성되며 특정 클래스에 속하지 않는 독립적인 함수입니다.

fun add(a: Int, b: Int): Int {
    return a + b
}

val result = add(3, 4) // 7

위의 예제에서 add() 함수는 두 정수를 더하는 일반 함수입니다.

결론

확장 함수는 기존 클래스에 새로운 기능을 추가하고, 일반 함수는 독립적인 코드 블록을 만들어 재사용 가능한 함수를 정의합니다. 두 유형의 함수는 서로 다른 용도와 동작을 가지며 적합한 상황에 따라 사용되어야 합니다.

더 자세한 정보는 코틀린 공식 문서를 참조하시기 바랍니다.