반복되는 코드를 별도의 라이브러리 함수로 빼내되 컴파일러가 자바의 일반 명령문만큼 효율적인 코드를 생성할게 만들 수는 없을까? 코틀린 컴파일러는 inline 변경자를 어떤 함수에 붙이면 컴파일러는 그 함수를 호출하는 모든 문장을 함수 본문에 해당하는 바이트 코드로 변경한다. 인라이닝이 작동하는 방식 어떤 함수를 inline으로 선언하면 그 함수의 본문이 인라인 된다. 함수를 호출하는 코드를 함수를 호출하는 바이트코드 대신에 함수 본문을 번역한 바이트 코드로 컴파일한다는 뜻이다. fun main(args: Array) { val lock = ReentrantLock() synchronized(lock){ // logic } } inline fun synchronized(lock: Lock, action: ..