코틀린 완벽 가이드

    [Kotlin]enum class와 data class

    enum class enum 클래스는 미리 정의된 상수들로 이루어진 제한된 집합을 표현하는 클래스입니다. enum 클래스를 사용하면 정해진 상수들로 이뤄진 집합을 타입 안전(type-safe)하게 다룰 수 있습니다. 가장 단순한 형태는 아래와 같습니다. 빠뜨린 부분이 없는 when 식 enum 역시, 다른 타입과 유사하게 when을 사용해 변수 각각의 값을 비교할 수 있습니다. enum 사용 시 when 식에서 enum의 값이 될 수 있는 모든 enum 상수를 다룬다면, 따로 else를 작성하지 않아도 됩니다. 코틀린은 내부적으로 빠뜨린 부분이 없는 when 식에는 NoWhenBranchMatchedException 타입의 예외를 던지는 else가 암시적으로 추가됩니다. 빠뜨린 부분이 없는 when 식의..

    [Kotlin] 객체

    코틀린 객체 코틀린의 객체 선언은 클래스와 상수를 합한 것으로 객체 선언을 통해 싱글톤(singleton: 인스턴스가 단 하나 존재하는 클래스)을 만들 수 있습니다. 객체 선언 코틀린의 객체 선언은 class 대신 object를 사용합니다. 객체 선언은 클래스를 정의하는 동시에 인스턴스를 정의한다고 보면 됩니다. 객체 정의는 Thread-Safe하기 때문에 컴파일러는 실행되는 여러 스레드에 대해 하나의 인스턴스만 공유되고 초기화 코드 역시 한 번만 실행되도록 보장합니다. 초기화 작업은 싱글톤 클래스가 실제 로딩되는 시점까지 지연되며, 보통 프로그램이 해당 객체 인스턴스에 처음 접근할 때 초기화됩니다. 자바에서는 비공개 생성자와 정적(static) 상태를 조합한 클래스 정의를 통해 싱글톤을 만들고, 아래 ..

    [Kotlin] 코틀린 함수

    코틀린 함수 자바 메소드처럼 코틀린 함수도 어떤 입력(parameter)을 받아 자신을 호출한 코드쪽에 출력값을 반환(return)할 수 있는 재사용 가능한 코드 블록입니다. 자바와 달리 코틀린에서 도달할 수 없는 코드(unreachable code)는 오류가 아닙니다. 따라서, return문 다음에 코드가 위치하고 있으면 실질적으로 죽어있는 코드지만 에러가 발생하진 않습니다. → 컴파일러가 경고를 표시하고 IDE는 해당 부분을 강조해줍니다. fun increment(n: Int): Int { return n++ // Error: can't change immutable variable } 함수 반환 타입: 함수 본문 앞에 :을 붙여 작성합니다. 함수 파라미터: 파라미터 앞에는 val이나 var을 표시할..

    [Kotlin] 코틀린 언어 기초

    코틀린 기본 문법 주석 자바와 마찬가지로 코틀린은 세 가지 주석을 지원하며, 코드를 문서화할 때 사용합니다. 한 줄 짜리 주석: //로 시작하고 줄이 끝나면 주석도 끝난다. 여러 줄 주석: /*로 시작하고 */로 끝난다. KDoc 여러 줄 주석: /**로 시작하고 */로 끝난다. Javadoc과 비슷한 리치 텍스트 문서를 생성하기 위해 사용 자바와 달리 코틀린에서는 여러 줄 주석으로 여러번 내포시킬 수 있다. 불변(Immutable) 변수 코틀린에서 변수를 정의하는 가장 간단한 형태는 다음과 같습니다. val num = 15 val 키워드: 값을 뜻하는 value에서 유래 변수 식별자: 새 변수에 이름을 부여 변수의 초깃값: = 기호 뒤에 옴 val 변수는 불변 변수로 한 번 초기화하면 다시는 값을 대입..

    [Kotlin] 코틀린이란?

    코틀린 코틀린은 안전성, 간결성, 상호 운용성을 강조하는 다중 패러다임, 다중 플랫폼 프로그래밍 언어입니다. 안전성 프로그래밍 언어가 안전하려면 프로그래머의 오류를 방지할 수 있어야 합니다. 실전에서 오류를 방지하려면 대가가 필요하기 때문에 안전성을 고려해 언어를 설계하는 것은 트레이드오프의 문제입니다. 코틀린의 설계 목표 중 하나는 자바보다 더 안전성을 보장하는 언어를 설계하되, (자바보다는) 개발자의 생산성을 덜 해치는 언어를 만드는 것입니다. 타입 추론(type inference): 개발자가 명시적으로 타입을 지정하지 않아도 됨(자바10에서도 지역변수에 대한 타입 추론 도입) 널이 될 수 있는 타입(nullable type): null 사용 제한하여 NPE 예외를 좀 더 쉽게 방지 스마트 캐스트(s..