Kotlin 코루틴은 비동기 처리를 구조적으로 표현하기 위한 언어/라이브러리 조합이다.thread blocking을 피하면서도 코드 흐름을 직관적으로 유지하는 것을 목표로 한다.이 글에서는 suspend, 코루틴, Flow의 관계와 함께, 실제 Android 환경에서
Compose Runtime이 상태(State) 의 변경을 감지하고UI 재구성을 효율적으로 수행하기 위해 사용하는 데이터 일관성(Consistency) 관리 시스템입니다.간단히 말해,“현재 상태가 어떤 값인지”“어떤 컴포저블이 그 값을 참조 중인지”“값이 바뀌었을 때
Jetpack Compose의 UI 생명주기와 상태 추적을 관리하는 시스템입니다.Compose는 선언형 UI → “UI = 상태(state)의 함수”Compose Runtime은 내부적으로 상태 변경을 감지하고, 필요한 부분만 재구성(Recomposition) 합니다.
재구성(Recomposition) 중에도 값을 유지하기 위한 “상태 저장 장치”상태(State)가 변할 때, 해당 상태를 참조하는 UI만 다시 그리는 과정“상태를 자식이 아니라 부모 쪽에서 기억하고 관리한다”는 의미입니다.이렇게 하면 부모가 상태를 제어하고, 자식은 단
비동기 데이터를 다루는 가장 코틀린스러운 방법.Flow는 비동기적으로 여러 값을 순차적으로 내보내는(emit) 데이터 스트림이에요.데이터를 한 번에 다 가져오지 않고, 필요할 때마다 값을 흘려보내는 구조라고 보면 됩니다.→ 대부분의 경우 Cold Flow로 충분하며,H
Kotlin 컬렉션은 List / Set / Map으로 나뉘며, 각각 읽기 전용과 가변 형태가 있다.읽기 전용: List<T>, Set<T>, Map<K, V>가변: MutableList<T>, MutableSet<T>, MutableMap&
“함수 호출을 인라인(복붙) 하여 호출 오버헤드를 줄이는 키워드”일반 함수는 호출 시 스택에 함수를 넣고 실행하지만, inline 함수는 컴파일 시 함수 본문을 호출 위치에 그대로 삽입합니다. 즉, 함수 호출 비용(call overhead) 을 제거해줍니다.컴파일
Kotlin에서 컬렉션(List, Map, Set 등)을 다룰 때 자주 사용하는 함수형 고차함수(Higher-Order Functions) 들이 있습니다.그중에서도 map, filter, 그리고 람다식의 기본 매개변수 it 은가장 자주 등장하는 핵심 문법이다.람다식에서
lateinit은 "나중에 초기화하겠다"(late initialization)는 의미를 가진 키워드입니다.보통 val(읽기 전용)에는 사용할 수 없고, var(가변 변수) 와 Non-null 타입에만 적용됩니다.즉, 선언 시 값을 할당하지 않고, 나중에 꼭 초기화할 것
코틀린에서 init 키워드는 초기화 블록(Initializer Block)을 정의하는 데 사용됩니다. 이는 클래스의 인스턴스가 생성될 때 실행되는 코드를 포함합니다.init 블록은 클래스의 인스턴스를 생성할 때 (생성자가 호출될 때) 실행되는 코드 블록입니다.주로 클래
코틀린은 자바의 타입 시스템을 개선하여 Unit, Any, Nothing 이라는 세 가지 특별한 타입을 제공합니다. 이들은 함수의 반환, 타입 계층, 예외 처리를 명확하게 정의하는 데 중요한 역할을 합니다. 1. Unit: 반환값이 없는 함수 정의: 반환 값이 없음을 나타내는 타입 (자바의 void와 유사). 차이점: void는 키워드지만, Unit은...
코루틴(Coroutine)비동기 작업을 간단하게 처리할 수 있도록 돕는 경량 스레드수천 개를 동시에 실행해도 스레드보다 부담이 적음suspend 함수일시 중단 가능한 함수다른 suspend 함수나 코루틴 안에서만 호출 가능메인 스레드를 차단하지 않고, 비동기적으로 실행
고차 함수(Higher-Order Function)함수를 인자로 받거나, 함수를 반환하는 함수Kotlin에서 콜백 함수를 간단히 구현할 수 있음람다 표현식{ parameter -> body } 형식파라미터가 하나일 경우 it 키워드로 축약 가능마지막 인자가 함수일 경우
문제 링크ISBN(International Standard Book Number)은 전 세계 모든 도서에 부여된 고유번호로, 국제 표준 도서번호이다. ISBN에는 국가명, 발행자 등의 정보가 담겨 있으며 13자리의 숫자로 표시된다. 그중 마지막 숫자는 체크기호로 ISB
is 연산자를 이용해 객체가 특정 타입인지 확인 가능is가 true로 확인되면 스마트 캐스트(Smart Cast) 기능이 적용되어, 별도의 형 변환 없이 해당 타입의 멤버를 바로 사용 가능!is 를 사용하면 반대(특정 타입이 아닌 경우) 확인 가능as 연산자를 사용하면
문제 링크2024년 2월 3일 개최 예정인 온사이트 그랜드 아레나에서는 참가자들에게 티셔츠 한 장과 펜 한 자루가 포함된 웰컴 키트를 나눠줄 예정입니다. 키트를 제작하는 업체는 다음과 같은 조건으로만 주문이 가능합니다.티셔츠는 S, M, L, XL, XXL, 그리고 X
코틀린에서 클래스는 기본적으로 final (상속 불가)상속이 필요하다면 클래스 선언 앞에 open 키워드를 붙여야 함메소드나 프로퍼티도 기본적으로 오버라이드 불가 → open 키워드 필요오버라이드 시 반드시 override 키워드 사용interface 키워드로 선언여러
프로퍼티를 정의할 때, 코틀린이 자동으로 생성해주는 실제 값을 저장하는 공간getter/setter를 직접 정의할 때 프로퍼티를 자기 자신으로 참조하면 무한 루프에 빠질 수 있음 → 이를 막기 위해 field라는 키워드를 사용field → 프로퍼티의 backing fi
val → 읽기 전용(기본적으로 getter만 생성)var → 읽기/쓰기 가능(getter, setter 모두 생성)private set → 외부에서 setter 접근 차단 (읽기 전용처럼 사용 가능)get() → 커스텀 게터 정의 가능 (field 키워드를 사용)da
문제 링크세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그리고 나서 모든 점수를 점수/M\*100으로 고쳤다.예를 들어, 세준이의 최고점이 70이고, 수학점수가 50