[Kotlin] 함수의 종류 (확장, infix, inline, 지역)

유존돌돌이·2023년 3월 24일
0

Kotlin

목록 보기
9/10
post-thumbnail

확장함수

fun main() {
    var str = "12345"
    println(str.lastChar())
}

fun String.lastChar(): Char {
    return this[this.length-1]
}
  1. 클래스의 밖에서 클래스에 안에 있는것 처럼 사용하는 함수
    위 처럼 lastChar 라는 함수를 String.lastChar()로 선언하여 String 함수처럼 사용할 수 있다.
  2. 원본 class의 private, protected 멤버 접근이 안된다(캡슐화 보존)
  3. 멤버함수, 확장함수 중 멤버함수에 우선권이 있다.

중위함수(infix)

fun main() {
    println(3.getMiddle(5))
    println(3 getMiddle 5)
}

infix fun Int.getMiddle(a1: Int) = (this+a1)/2

infix를 붙인 함수로 downTo until과 같이 변수.함수(arg)가 아닌 변수 함수 arg 이런식으로 호출하여 사용할 수 있도록 하는 함수

inline함수

함수가 호출되는 대신 함수를 호출한 지점에 함수 본문을 그대로 복붙한다. 함수 파라미터전달할 떄 오버헤드를 줄일 수 있다. 여러개의 call chain이 생기면 성능 저하가 일어나기 때문. 하지만 신중하게 사용되어야 한다.

지역함수

함수 안에 함수를 넣는 것. 중복되는 기능을 따로 빼고 싶은데, 현재 함수에서만 사용되는 로직일 경우 지역함수를 사용한다. 하지만 depth가 깊어지고 코드가 깔끔해지지 않는다는 단점이 있다.

0개의 댓글