noinline
키워드를 람다식 함수 매개변수 정의에서 사용하며 기본적으로 람다식 함수를 매개변수로 가진 해당 함수가 inline으로 정의 되어 있다고 하더라도 사용할 때 람다식 함수를 inline
시키지 않습니다.
inline fun sub(out1:()->Unit, noinlin out2:()->Unit){
...
}
noinline이 있는 람다식 함수는 인라인으로 처리되지 않고 분기하여 호출됩니다.
코틀린에서는 익명 함수를 종료하기 위해서 return 을 사용할 수 있습니다.
이때 특정 반환값 없이 return만 사용해야 합니다. 그렇다면 람다식 함수를 빠져 나오려면 어떻게 할까요?
람다식 함수를 인자로 사용하는 함수는 의도하지 않게 람다식 함수 바깥에 있는 함수가 같이 반한되어 버리는데 이것을 비지역 반환이라고 합니다.
ex)
값 :
Hello
a: 3
이때 이런 비지역 반환을 금지하려면 crossinline
이라는 키워드를 람다식 함수 앞에 사용해 함수의 본문 블록에서 return이 사용되는 것을 금지할 수 있습니다. → crossinline
설정 시 return에 빨간줄