이펙티브 코틀린(효율성)
아이템 46: 함수 타입 파라미터를 갖는 함수에 inline 한정자를 붙여라
inline 한정자의 역활은 컴파일 시점에 함수를 호출하는 부분을 함수의 본문으로 대체하는것
inline 한정자의 장점
- 타입 아규먼트에 reified 한정자를 붙여서 사용할수 있다
- reified 한정자를 지정하면 타입 파라미터를 사용한 부분이 타입 아규먼트로 대체된다
- 함수 타입 파라미터를 가진 함수가 훨씬 빠르게 동작한다
- 함수호출과 리턴을 위해 점프하는 과정과 백스텍을 추적하는 과정이 없기 때문
- 함수 타입이 없을때는 사용하지 않는것을 권장
- 비지역 리턴을 사용할수 있다
- 일반적인 함수는 return을 사용할수 없다
- 함수 리터널이 컴파일 될때 함수가 객체로 래핑되어 발생하는 문제
- 일반적인 함수는 return을 사용할수 없다
inline 한정자의 비용
- 인라인 함수는 재귀적으로 동작할수 없다
crossinline : 아규먼트로 인라인 함수를 받지만 비지역적 리턴을 하는 함수는 받을수 없게 만듬
noinline : 아규먼트로 인라인 함수를 받을수 없게 만듬