본문 바로가기

코틀린인액션7

[Kotlin in Action] 8.2 인라인 함수: 람다의 부가 비용 없애기 8.2.1 인라이닝이 작동하는 방식어떤 함수를 inline으로 선언하면 그 함수의 본문이 인라인된다. 다른 말로 하면 함수를 호출하는 코드를 함수를 호출하는 바이트코드 대신에 함수 본문을 번역한 바이트 코드로 컴파일한다는  뜻이다. 8.2.2 인라인 함수의 한계인라이닝을 하는 방식으로 인해 람다를 사용하는 모든 함수를 인라이닝할 수는 없다. 함수가 인라이닝될 때 그 함수에 인자로 전달된 람다 식의 본문은 결과 코드에 직접 들어갈 수 있다. 하지만 이렇게 람다가 본문에 직접 펼쳐지기 때문에 함수가 파라미터로 전달받은 람다를 본문에 사용하는 방식이 한정될 수밖에 없다. 함수 본문에서 파라미터로 받은 람다를 호출한다면 그 호출을 쉽게 람다 본문으로 바꿀 수 있다. 하지만 파라미터로 받은 람다를 다른 변수에 저.. 2025. 4. 2.
[Kotlin in Action] 8.1 고차 함수 정의 고차 함수는 다른 함수를 인자로 받거나 함수를 반환하는 함수다. 코틀린에서는 람다나 함수 참조를 사용해 함수를 값으로 표현할 수 있다. 따라서 고차 함수는 람다나 함수 참조를 인자로 넘길 수 있거나 람다나 함수 참조를 반환하는 함수다. 예를 들어, 표준 라이브러리 함수인 filter는 술어 함수를 인자로 받으므로 고차 함수다.list.filter { x > 0 }  8.1.1 함수 타입val sum = { x: Int, y: Int -> x + y }val action = { println(42) }이 경우 컴파일러는 sum과 action이 함수 타입임을 추론한다. 각 변수에 구체적인 타입 선언을 추가하면 어떻게 될까.val sum: (Int, Int) -> Int = { x, y -> x + y }va.. 2025. 3. 27.