Kotlin/포스팅

코틀린 인라인 함수와 프로퍼티

짜집퍼박사(짜박) 2023. 12. 31. 02:50

코틀린에서 인라인 함수(Inline Function)과 프로퍼티(Property)는 코드 최적화와 간결한 문법을 제공하는 중요한 기능들입니다.

 

인라인 함수 (Inline Function)

인라인 함수는 호출 시 함수의 내용을 호출하는 부분에 직접 삽입하여 성능을 향상시키는 기능을 제공합니다. 일반적으로 함수를 호출하면 함수의 내용이 호출 지점에 복사되는 것이 아니라 호출 스택에 새로운 프레임이 생성되어 실행됩니다. 그러나 인라인 함수는 컴파일러에 의해 호출 지점에 함수의 코드가 직접 삽입되어 실행되므로 함수 호출로 인한 오버헤드가 줄어들게 됩니다.

인라인 함수를 선언하기 위해서는 inline 키워드를 사용합니다.

inline fun <T> customPrint(value: T) {
    println("Print: $value")
}

fun main() {
    customPrint("Hello, World!")
}

 

인라인 함수의 주의 사항

1. 인라인 함수는 코드 크기를 늘릴 수 있으므로, 큰 함수나 루프에 사용할 때 유의해야 합니다.
2. 인라인 함수 내에서 람다 함수를 사용할 경우, 람다 함수도 인라인 처리됩니다.
3. 함수의 매개변수로 전달되는 람다 함수는 noinline 키워드를 사용하여 비인라인 처리할 수 있습니다.

 

프로퍼티 (Property)

코틀린에서 프로퍼티는 클래스나 객체의 멤버 변수에 대한 접근자(getter)와 설정자(setter)를 간단하게 정의할 수 있는 기능입니다. 프로퍼티는 자바에서 사용하는 전통적인 게터(getter)와 세터(setter) 메서드 대신 사용됩니다.

class Person {
    var name: String = ""
    var age: Int = 0
}

위의 예제에서 name과 age는 프로퍼티로, 각각에 대해 자동으로 게터와 세터가 생성됩니다. 이를 사용할 때는 일반적인 멤버 변수처럼 사용할 수 있습니다.

 

커스텀 게터와 세터

프로퍼티의 게터와 세터를 직접 정의할 수도 있습니다.

class Circle {
    var radius: Double = 0.0
        get() {
            println("Getting radius")
            return field
        }
        set(value) {
            println("Setting radius to $value")
            field = value
        }
}

위의 예제에서 radius의 게터와 세터를 커스텀으로 정의하였습니다.

 

프로퍼티 위임

코틀린에서는 프로퍼티를 위임(delegate)하여 특정 동작을 다른 객체에 위임할 수 있습니다. by 키워드를 사용하여 프로퍼티를 위임할 클래스를 지정합니다.

class Example {
    var p: String by Delegate()
}

위의 예제에서 p 프로퍼티는 Delegate 클래스에 위임되어 해당 클래스에서 프로퍼티의 동작을 커스터마이징할 수 있습니다.

인라인 함수와 프로퍼티는 모두 코드를 간결하게 만들고 성능을 향상시키는데 기여합니다. 각각의 사용에 따라 코드를 유연하게 작성할 수 있도록 도와주는 중요한 기능들입니다.

 

With ChatGPT

'Kotlin > 포스팅' 카테고리의 다른 글

코틀린 확장 함수  (0) 2023.12.31
코틀린 비지역적 제어 흐름  (0) 2023.12.31
코틀린 호출 가능 참조  (0) 2023.12.31
코틀린 익명 함수  (0) 2023.12.31
코틀린 람다 함수  (0) 2023.12.31