[Kotlin] inline 인라인함수에 대해 알아보자 (Feat.crossinline)

김민주·2022년 12월 2일
0

익명함수와 람다 차이

익명함수 anonymous fun은 return,break,continue가 사용가능하다
하지만 람다식에서는 사용하기 어렵고 라벨표기법과 함께 사용해야 한다

inline 함수

  • 분기없이 처리한다
  • 함수가 호출되는 곳에 내용을 모두 그대로 복사한다 (점프안함)
  • 단점은 코드가 복사되므로 많은 함수에 사용하면 코드가 늘어난다

noinline 키워드

람다식에서 인라인을 막는다.

inline fun shortFunc(a:String, noinline out:(String) -> Unit){ }

crossinline 키워드

비지역 반환을 금지 시킨다.

inline fun shortFun(a:Int, crossinlineout:(Int) -> Unit){
    println("hello")
    out(a)
    println("goodbye")
}

fun main() {
    shortFunc("worldCup") { a -> println("today") }
    shortFun(3){
        println("a:$it")
        //return 
    }
}

비지역 반환시: shortFun out에서 리턴되어 굿바이 출력되지 않는다.

하지만, crossinlineout 키워드를 적용하면 return 컴파일에러가 뜬다.

https://www.boostcourse.org/mo132

profile
𝐃𝐨𝐧'𝐭 𝐛𝐞 𝐚 𝐩𝐫𝐨𝐜𝐫𝐚𝐬𝐭𝐢𝐧𝐚𝐭𝐨𝐫💫

0개의 댓글