아이템 46: 함수 타입 파라미터를 갖는 함수에 inline 한정자를 붙여라

이펙티브 코틀린(효율성)

아이템 46: 함수 타입 파라미터를 갖는 함수에 inline 한정자를 붙여라

inline 한정자의 역활은 컴파일 시점에 함수를 호출하는 부분을 함수의 본문으로 대체하는것

inline 한정자의 장점

  • 타입 아규먼트에 reified 한정자를 붙여서 사용할수 있다
    • reified 한정자를 지정하면 타입 파라미터를 사용한 부분이 타입 아규먼트로 대체된다
  • 함수 타입 파라미터를 가진 함수가 훨씬 빠르게 동작한다
    • 함수호출과 리턴을 위해 점프하는 과정과 백스텍을 추적하는 과정이 없기 때문
    • 함수 타입이 없을때는 사용하지 않는것을 권장
  • 비지역 리턴을 사용할수 있다
    • 일반적인 함수는 return을 사용할수 없다
      • 함수 리터널이 컴파일 될때 함수가 객체로 래핑되어 발생하는 문제

inline 한정자의 비용

  • 인라인 함수는 재귀적으로 동작할수 없다

crossinline : 아규먼트로 인라인 함수를 받지만 비지역적 리턴을 하는 함수는 받을수 없게 만듬

noinline : 아규먼트로 인라인 함수를 받을수 없게 만듬

참조