전체 글 (123) 썸네일형 리스트형 kotlinlang.org 내가 보려고 정리 - Coroutines basics Coroutines basics Your first coroutine 코루틴은 유예할 수 있는 계산의 인스턴스.. 나머지 코드와 동시에 작동하는 코드 블록을 실행해야 한다는 점에서 스레드랑 비슷해 보인다. 하지만 코루틴은 특정한 스레드에 바인딩되지 않음. 하나의 스레드에서 실행을 유예하고 다른 스레드에서 재개함. 가벼운 스레드로 생각할 수 있지만, 스레드와는 실사용에서 매우 다르게 만드는 중요한 차이점들이 있다. import kotlinx.coroutines.* fun main() = runBlocking { // this: CoroutineScope launch { // launch a new coroutine and continue delay(1000L) // non-blocking delay for.. kotlinlang.org 내가 보려고 정리 - Scope functions Scope functions 코틀린 표준 라이브러리는 객체의 컨텍스트 내의 코드 블록을 실행하는 것이 유일한 목적인 몇몇 함수들을 가지고 있다. 이러한 함수들을 람다식과 함께 객체에 호출하면 일시적인 범위를 생성한다. 이 범위 안에서는 객체의 이름 없이 객체에 접근할 수 있다. 이러한 함수들을 scope functions라고 부른다. let, run, with, apply, also가 있다. 기본적으로 이런 함수들은 공통적으로 객체에 대한 코드 블록을 실행한다. 다른 점은 블록내에서 객체를 어떻게 사용 가능한지와 전체 expression의 결과가 무엇인지이다. data class Person(var name: String, var age: Int, var city: String) { fun moveTo(.. kotlinlang.org 내가 보려고 정리 - Sequences Sequences collection과 함께 Kotlin 표준 라이브러리에는 sequence(Sequence)라는 다른 타입이 있다. 컬렉션과 다르게 sequence는 요소들을 포함하지 않고, 반복할 때 요소들을 만든다. sequence는 Iterable과 같은 함수들을 제공하지만 multi-step 컬렉션 처리에 대한 또다른 접근도 구현한다. Iterable의 처리의 multi-steps가 있으면, 다음과 같이 실행된다. 각 처리 step은 결과인 중간 단계의 컬렉션을 완성하고 반환한다. 다음 step은 저 중간 단계의 컬렉션으로 실행한다. sequence의 multi-step processing은 차례로 가능할 때 '게으르게' 실행된다. 실질적인 계산은 모든 processing chain의 결과가 요.. kotlinlang.org 내가 보려고 정리 - Object expressions and declarations Object expressions and declarations 어떤 클래스를 약간 수정하기 위해 새로운 서브 클래스를 명시적으로 선언하지 않고 객체를 생성해야 할 때가 있다. 이때 object expressions와 object declarations을 사용한다. Object expressions 명시적으로 class 선언을 하지 않은 익명 클래스의 객체들을 생성한다. 익명 클래스들은 일회용으로 쓸 때 효과적이다. 스크래치, 기존 클래스의 상속, 인터페이스 구현으로 정의할 수 있다. 익명 클래스들의 인스턴스들은 이름이 아닌 expressions으로 정의되기 때문에 anonymous objects라고 불린다. Creating anonymous objects from scratch fun main() { .. kotlinlang.org 내가 보려고 정리 - Sealed classes interfaces Sealed classes and interfaces Sealed classes와 interfaces는 상속에 대해 더 많은 제어를 제공하는 제한된 클래스 계층을 대표한다. 실드 클래스의 모든 직접적인 서브 클래스들은 컴파일 시에 알려진다. 실드 클래스가 정의된 모듈과 패키지 밖에서는 서브클래스가 나타나지 않을 것이다. 제 3자는 실드클래스를 그들의 코드에서 확장하지 못할 것이다. 따라서 실드 클래스의 각 인스턴스는 이 클래스가 컴파일되었을 때 알려진 제한된 집합으로부터 타입을 갖는다. 같은 일은 실드 인터페이스와 그 구현들에서도 일어난다. 실드 인터페이스가 있는 모듈이 한번 컴파일되면 새로운 구현은 나타나지 못한다. 어떤 의미에서 실드 클래스는 enum 클래스와 비슷하다.: enum 타입의 값들의 집합.. kotlinlang.org 내가 보려고 정리 - Data classes Data classes 데이터를 담는 것이 주 목적인 클래스. data class User(val name: String, val age: Int) 인스턴스를 읽을 수 있게 출력하거나, 인스턴스끼리 비교하거나, 복사 등등의 기능을 수행해주는 멤버 함수들을 쓸 수 있다. .equals / .hashCode() .toString() 형식: "User(name=John, age=42)" .componentN() 선언된 순서대로 property들에 대응한다(해당한다?) .copy() 코드의 일관성과 의미있는 행동을 위해 데이터 클래스는 다음 요구사항을 모두 만족해야 한다. primary 생성자는 적어도 하나 이상의 매개변수를 가져야 한다. 모든 primary 생성자의 매개변수들은 val나 var로 마크되어 있어.. kotlinlang.org 내가 보려고 정리 - Null safety Null safety 코틀린에서 null 값을 가질 수 있다. null 값으로 발생할 수 있는 이슈들을 막기 위해 null safety가 있다. 런타임(실행 시간)보다는 컴파일 타임에 Null safety가 null 값으로 인해 생길 수 있는 문제들을 탐지한다. -null 값을 허용할 때 명시할 수 있게 한다. -null 값을 확인한다. -null 값을 가지고 있을 property나 function에 safe call을 사용할 수 있게 한다. -null 값이 탐지되었을 때 취할 행동을 선언할 수 있게 한다. Nullable types nullable type: null 값을 가질 수 있는 타입. 기본적으로는 null 값을 허용하지 않지만, 타입 선언 뒤에 ?을 붙여 nullable type을 선언할 수 .. kotlinlang.org 내가 보려고 정리 - Classes 코틀린은 클래스와 객체로 객체지향 프로그래밍을 지원한다. 프로그램에서 데이터를 저장하는 데 객체가 유용하다. 클래스를 사용함으로써, 객체의 특성들의 집합을 선언할 수 있다. 클래스로 객체를 생성하면 객체들의 특성을 매번 선언할 필요가 없어 효율적이다. Properties class Contact1(val id: Int, var email: String) class Contact(val id: Int, var email: String){//class header //class body val category: String = "" } /* 변수와 마찬가지로 클래스의 인스턴스가 생성된 후 변경될 필요가 없는 property들은 val로 선언하는 것이 좋다. val 나 var 없이 ()안에 property들을.. 이전 1 2 3 4 ··· 16 다음