fun

    [Coroutine 부록] 1. Kotlin main 함수를 Coroutine을 사용하기 위한 suspend fun으로 만들기

    프로세스의 시작점 main 함수 main 함수란 모든 프로세스의 시작점이다. 보통의 프로그램은 main함수에서 시작해서 main함수가 끝나면 종료된다. main함수를 실행하는 스레드가 Main Thread이며, main함수는 마지막줄이 실행되면 종료된다. 안드로이드와 같은 프레임웍은 이러한 main함수를 프레임웍 단에서 제어하기 때문에 직접 제어할 기회가 없지만, 이는 프로그래밍에 매우 중요한 포인트이기 때문에 알고 있어야 한다. 예를 들어 위와 같은 코드를 실행하면 다음과 같은 결과가 나온다. main 함수 입니다. Process finished with exit code 0 자 이제 그림2와 같은 코드를 실행해보자. 그림2에서는 Main Thread가 아닌 IO Thread에 println을 하도록 ..

    [Delegate Pattern] 2. by 키워드를 이용하여 Delegate Pattern 구현하기

    목표 by 키워드를 이용하여 Delegate Pattern을 구현하는 방법을 안다. 개요 Kotlin에서는 Delegate Pattern을 구현하기 위한 키워드인 by 키워드를 제공한다. 클래스 선언부의 by 키워드를 먼저 살펴보자 클래스 선언부의 by 키워드 클래스 선언부에는 interface가 implement되거나 다른 클래스가 상속될 수 있다. 위임 패턴은 인터페이스 구현부를 다른 클래스에 위임하는 것이기 때문에 인터페이스 구현에만 사용될 수 있다. 따라서 Kotlin의 위임패턴을 도와주는 by키워드는 다음과 같은 제한을 가진다. by 키워드는 interface가 implement되는 경우에만 사용될 수 있다. 클래스 상속에는 by 키워드 사용이 불가능하다. 변수(val, var)와 메서드(fun..

    [Kotlin] enum class의 사용하기

    목표 enum class의 사용법을 이해한다. enum class에 대한 함수 만들기 class Task { var state: State = State.WAITING fun printState() = when(state){ State.WAITING -> println("Waiting..") State.PROCESSING -> println("Processing..") State.DONE -> println("Task done") } enum class State { WAITING, PROCESSING, DONE } } 앞의 글에서 위의 코드를 보았다. 하지만, 이 코드는 문제가 있다. 특정한 state가 추가될 때마다 when의 분기에 무조건 print를 위한 처리 로직을 넣어주어야 한다. 공통 함수 ..

    Kotlin 블록(문)이 본문인 함수와 식이 본문인 함수

    목표 문과 식을 구분한다. 문이 본문인 함수와 식이 본문인 함수의 차이를 안다. 문(Statement)과 식(Expression)의 구분 식은 자바에서는 볼 수 없었던 코틀린의 특성이다. 자바의 함수는 문으로 이루어져 있으며, return이라는 키워드를 통해서만 값을 반환할 수 있었다. 문과 식의 차이를 살펴보자. 문(Statement) : 자신을 둘러싼 가장 안쪽 블록의 최상위 요소로 존재하며, 아무런 값을 만들어내지 않는다. 식(Expression) : 값을 만들어 내며, 다른 식의 하위 요소로 계산에 참여한다. *코틀린에서는 루프를 제외한 대부분의 제어 구조가 식이다. 블록(문)이 본문인 함수 본문이 중괄호 {} 로 둘러싸인 함수를 문이 블록이 본문인 함수라 부른다. 특징 블록이 본문인 함수는 타입..

    Kotlin의 가시성 변경자(접근 제한자) : public, internal, protected, private

    목적 최상위 선언의 가시성 변경자에 대해 이해한다. 클래스 멤버의 가시성 변경자에 대해 이해한다. 가시성 변경자 가시성 변경자는 클래스에 대한 외부 접근 권한을 제어한다. Kotlin에서는 4가지 가시성 변경자를 제공한다. public internal protected private Kotlin에서는 최상위 선언에서의 가시성 변경자와 클래스 멤버 선언에서의 가시성 변경자의 접근성이 달라진다. 먼저 공통적으로 적용되는 가시성 변경자인 public에 대해 알아보자. public public은 기본 가시성 변경자로, 어디에서나 접근 가능한 가시성 변경자이다. Kotlin에서는 아무것도 쓰지 않을 때 public이 기본 가시성 변경자로 설정된다. 이는 가시성 변경자를 쓰지 않을 때 default라는 별도의 가시..