목록Kotlin (10)
계발자 블로그
Flow란?코루틴 Flow는 Kotlin에서 비동기적인 연속적인 데이터 스트림을 처리하기 위한 라이브러리입니다. 이것은 비동기적으로 값을 생성하고 소비하는 데 사용되며, 연속적인 데이터 스트림을 표현할 수 있는 코루틴 유형입니다. 비동기적으로 작업을 처리하는 코루틴에서 Suspend 함수를 사용하면작업이 모두 완료된 후에 단일 값만을 반환받을 수 있습니다. 하지만 중간중간 진행되는 코루틴 작업 중에 갱신되는 값까지 반환받을 수 있다면로직 업데이트를 더 촘촘히 수행할 수 있습니다Flow는 이런 요구를 충족하기 위해 만들어진 타입입니다. Flow에서 데이터 스트림에 관여하는 주체는 Producer(생산자), Intermediary(중간 연산자), Consumer(소비자) 3개가 있습니다. Producer가..
추상 클래스란(Abstract Class) ? 추상 메서드를 가지고 있는 클래스를 의미합니다. 추상 메서드는 구현되지 않은 메서드입니다. 추상 클래스는 구현 되지 않은 추상 메서드를 가지고 있기 때문에 객체로 만들 수 없습니다. 반드시 자식 클래스에서 오버라이딩 즉 상속을 통해서 재정의 해야합니다. 추상 클래스의 목적은 자식 클래스에서 메서드를 오버라이딩 하기 위해 강제성을 부여하기 위함입니다. 추상 클래스 안에는 일반 메서드도 구현이 가능합니다. 추상 클래스 내의 프로퍼티 또한 abstract로 선언할 수 있습니다. 마찬가지로 상속 받는 클래스에서 구체화 해야 합니다. 추상 클래스 사용법 abstract class Super1 { abstract fun method2() } class와 fun 앞에 a..
inline 함수 코틀린에서 인라인 함수(inline function)은 함수 호출 시 해당 함수의 본문이 호출 위치에 "인라인"되어 실행되도록 하는 특별한 종류의 함수입니다. 인라인 함수는 함수 호출로 인한 오버헤드를 줄이고 성능을 최적화하는 데 도움이 됩니다. 일반적으로 함수 호출은 호출 지점에서 호출되는 함수로 이동하고, 해당 함수가 실행을 마친 후에 호출 지점으로 다시 돌아와야 합니다. 이러한 과정은 함수 호출을 위해 스택에 프레임을 추가하고 제거하는 작업을 수반하며, 성능에 영향을 줄 수 있습니다. 인라인 함수는 이러한 함수 호출 오버헤드를 제거하기 위해 컴파일러에게 해당 함수의 본문을 호출 지점에 직접 복사하도록 요청합니다. 이렇게 하면 함수 호출이 발생하지 않고 호출 지점에 함수의 본문이 인..
NullPointException Java 언어로 개발을 하다 보면 NullPointException이라는 오류를 자주 만나게 됩니다. 이는 객체의 주소 값이 담겨져 있지 않는(null 값이 들어있는) 참조 변수를 통해 객체 접은을 시도하면 발생되는 오류입니다. 자바에서는 컴파일 단계에서 null을 체크할 수 없습니다. 그래서 런타임 시에 null 값이 들어가 있다면 Exception이 발생하는 것을 볼수 있습니다. 이런 점들은 에러를 찾기 더 어렵고 많은 이슈들을 만들수 있습니다. 그래서 코틀린은 null이 될수 있는 값과 될수 없는 값을 분류하면서 null에 대한 안정성을 가질수 있습니다. Null Safe Kotlin은 개발자가 null이 담겨 있는 참조변수를 통해 객체 접근을 시도할 때 오류가 발..
Companion Object란? companion object는 Java에서 static과 비슷한 개념입니다. companion object는 클래스 내부에 선언되며, 클래스의 인스턴스가 생성되지 않아도 접근할 수 있는 멤버를 정의할 수 있습니다. 클래스 내부의 한번만 선언할 수 있으며 보통 맨 마지막에 선언해주는 것이 일반적입니다. Java의 상수 자바에서는 위 처럼 static을 사용하여 변하지 않는 데이터를 외부에서 접근할 수 있게 생성해 주었습니다. Kotlin의 companion object 이렇게 사용할 수 있습니다. kotlin에서 const는 상수를 선언하기 위한 키워드입니다. const를 사용하면 런타임 시간에 값이 할당되는 val와 달리 컴파일 시간에 할당되는 상수를 선언할 수 있습니..
Property란? 코틀린에서 프로퍼티는 클래스 내부에 선언된 멤버 변수를 의미합니다. 다른 언어에서는 멤버변수를 필드(field)라고도 부르는데, 코틀린에서는 이를 프로퍼티로 부릅니다. 코틀린의 프로퍼티는 자바와 달리 기본적으로 getter와 setter 메서드를 자동으로 생성해 줍니다. 그동안 자바에서 getter와 setter를 만들어주고 코드가 길어지는 모습과 비교 해보면 코틀린은 매우 간결해졌습니다. 프로퍼티는 다음과 같은 형태로 선언합니다. var 변수이름 : 변수타입 = 초기값 var는 변수를 선언할 때 사용하는 키워드입니다. var로 선언하게 되면 값을 변경해 줄 수 있어 getter와 setter가 같이 생성됩니다. val 변수이름: 변수타입 = 초기값 또한 val으로도 프로퍼티를 생성할..
안드로이드에서는 기존 AsyncTask를 이용해서 비동기 프로그래밍을 구현했습니다.하지만 AsyncTask에는 메모리 누수등 여러가지 메모리 관련한 문제가 있어서API 30부터 deprecated 되었습니다.그 대체재로 코루틴을 권장하고 있습니다.코루틴이 코틀린과 이름이 비슷하지만 코틀린만의 고유한 개념은 아닙니다. 우선 프로그램에는 루틴이 있습니다.프로그램의 흐름을 일컫는 추상적인 개념입니다.메인루틴메인 함수에 의해서 진행 되는 프로그램의 흐름서브루틴메인함수 안에서 수행 되는 개별 함수들의 흐름보통 루틴은 일직선 적인 흐름입니다.하지만 코루틴의 특징은 일직선 적인 루틴의 특징을 suspend로 지연을 시키고 resume으로 재시작이 가능합니다. 구글에서 코루틴을..
코틀린을 사용하면서 많이 등장 하길래 한번쯤 제대로 정리 해 봐야겠다 생각해서 오늘은 코틀린의 스코프 함수에 대해 알아보겠습니다. Scope Function이란? 객체의 컨텍스트 내에서 코드 블럭을 실행할 수 있도록 해주는 함수입니다. Scope function은 이름처럼 Scope(범위)가 생깁니다. 해당 범위에서 특정 객체의 컨텍스트를 가지고 동작을 하는 것입니다. 람다식과 동일하게 작성을 하며, 이 범위 내에서는 객체의 이름이 없어도 객체에 접근할 수 있습니다. let, with, run, apply, also가 이에 해당됩니다. Scope function에는 두가지 차이점이있습니다. 1. Context Object를 참조하는 방법(this, it) 2. Return value 1. Context ..
Collection collection이란 여러 원소들을 담을 수 있는 자료구조입니다. 코틀린 외에도 다양한 프로그래밍 언어들에 존재합니다. 코틀린의 collection은 List, Set, Map이 포함됩니다 코틀린 컬렉션은 다른 언어와 다르게 변경 가능한(Mutable) 컬렉션과 변경 불가능한(Immutable) 컬렉션을 구분해 사용합니다. 크게 두개의 인터페이스가 있습니다 읽기 전용(read-only) : 원소에 접금만 가능 변경 가능(mutable) : 삽입, 삭제, 수정 가능 mutable collection을 사용하기 위해서 var를 사용해야만 하는 것은 아닙니다. 변수가 참조하는 컬렉션이 쓰기 동작에 의해 변경 되는 것이고 참조자인 변수가 변경 되는 것이 아니기 때문입니다. 하지만 val로 ..
https://developer.android.com/kotlin/coroutines Android의 Kotlin 코루틴 | Android 개발자 | Android DevelopersAndroid의 Kotlin 코루틴 코루틴은 비동기적으로 실행되는 코드를 간소화하기 위해 Android에서 사용할 수 있는 동시 실행 설계 패턴입니다. 코루틴은 Kotlin 버전 1.3에 추가되었으며 다른 언어에서 확developer.android.comhttps://developer.android.com/topic/libraries/architecture/coroutines 수명 주기 인식 구성요소와 함께 Kotlin 코루틴 사용 | Android 개발자 | Android Devel..