본문 바로가기

분류 전체보기277

[Kotlin in Action] 8.3 고차 함수 안에서 흐름 제어 루프를 filter와 같이 람다를 호출하는 함수로 바꾸고, 인자로 전달하는 람다 안에서 return을 사용하면 어떤 일이 벌어질까? 8.3.1 람다 안의 return문: 람다를 둘러싼 함수로부터 반환다음 코드의 실행 결과를 보면 이름이 Alice인 경우에 lookForAlice 함수로부터 반환된다는 사실을 분명히 알 수 있다.// 일반 루프 안에서 return 사용하기data class Person(val name: String, val age: Int)val people = listOf(Person("Alice", 29), Person("Bob", 31))fun lookForAlice(people: List) { for (person in people) { if (person.name.. 2025. 4. 2.
[npm] npm 버전 하나 올리는 명령어 매번 수동으로 했는데 명령어가 있더라. npm version prerelease 위 명령어 사용시 예를 들어 아래와 같이 된다.// package.json// 실행 전: "version": "0.2.0-beta.0",// 실행 후: "version": "0.2.0-beta.1", 2025. 4. 2.
[Kotlin in Action] 8.2 인라인 함수: 람다의 부가 비용 없애기 8.2.1 인라이닝이 작동하는 방식어떤 함수를 inline으로 선언하면 그 함수의 본문이 인라인된다. 다른 말로 하면 함수를 호출하는 코드를 함수를 호출하는 바이트코드 대신에 함수 본문을 번역한 바이트 코드로 컴파일한다는  뜻이다. 8.2.2 인라인 함수의 한계인라이닝을 하는 방식으로 인해 람다를 사용하는 모든 함수를 인라이닝할 수는 없다. 함수가 인라이닝될 때 그 함수에 인자로 전달된 람다 식의 본문은 결과 코드에 직접 들어갈 수 있다. 하지만 이렇게 람다가 본문에 직접 펼쳐지기 때문에 함수가 파라미터로 전달받은 람다를 본문에 사용하는 방식이 한정될 수밖에 없다. 함수 본문에서 파라미터로 받은 람다를 호출한다면 그 호출을 쉽게 람다 본문으로 바꿀 수 있다. 하지만 파라미터로 받은 람다를 다른 변수에 저.. 2025. 4. 2.
[Kotlin] 코틀린과 자바에서의 익명 함수와 람다 차이 1. 코틀린에서의 익명 함수와 람다 표현식문법 차이람다 표현식:중괄호 {} 안에 파라미터와 본문을 작성하며, 파라미터와 본문은 -> 기호로 구분한다.예시:{ x: Int -> x * 2 }익명 함수:fun 키워드를 사용하여 이름 없이 정의하며, 일반 함수와 동일한 문법을 따른다.예시:fun(x: Int): Int { return x * 2 }메모리에서의 동작 원리람다 표현식:외부 변수를 참조하면 클로저(closure)가 생성된다.클로저는 캡쳐된 변수들을 함께 보관하며, 이 변수들은 힙 메모리에 할당된다.만약 외부 변수를 캡쳐하지 않는다면, 컴파일러는 인라인이나 싱글톤 형태로 최적화하여 불필요한 객체 생성을 줄인다.익명 함수:익명 함수도 외부 변수를 참조하면 클로저가 생성될 수 있다.그러나 문법이 일반 함.. 2025. 4. 1.
[Kotlin] object는 어떻게 자바로 디컴파일 되는가 object Member { private const val name: String = "John Park" val age: Int? = 22 var address: String = "Seoul" fun sayHello() { println("Hello, $name!") }}이러한 Kotlin코드는 아래와 같은 Java 코드로 변환된다.public final class Member { @NotNull public static final Member INSTANCE = new Member(); @NotNull private static final String name = "John Park"; @Nullable private static fina.. 2025. 3. 27.