ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Kotlin] 코틀린 기초 - 제어문
    Computer Science/Kotlin 2021. 1. 17. 18:47

    제어문

    enum 클래스

    • 자바와 마찬가지로 enum은 단순히 값만 열거하는 존재가 아님
    • enum 클래스 안에도 프로퍼티나 메소드를 정의할 수 있다
    • enum 클래스 안에 메소드를 정의하는 경우 반드시 enum 상수 목록과 메소드 정의 사이에 세미 콜론을 넣어야 함

    • 결과

    when으로 enum 클래스 다루기

    • if와 마찬가지로 when도 값을 만들어내는 식
    • 식이 본문인 함수에 when을 바로 사용할 수 있다( return이 없고 =로 바로 사용)
    • 자바의 switch문과 동일한 기능이며, 각 분기의 끝에 break을 넣지 않아도 가능

    • 한 분기 안에서 여러 값을 매치 패턴으로 사용하려면 콤마(,)로 분리해서 사용한다

    • Color.? 처럼 하지 않고 짧게 하기 위해 colors.Color와 colors.Color.*를 import
    • colors 패키지에 Color enum class를 선언했음

    when과 임의의 객체 함께 사용

    • 자바는 분기조건에 상수만을 사용할 수 있지만, 코틀린에서는 임의의 객체를 넣을 수 있음

    • when에 인자를 주지 않고 불린식으로 처리를 할 수도 있음

    • when은 인자로 받은 객체가 각 분기 조건에 있는 객체와 같은지 테스트 함

    • 매치되는 분기 조건이 없다면 else 문을 실행

    RED와 YELLOW를 믹스해서 ORANGE 출력

    스마트 캐스트

    • 코틀린에서는 is를 사용해 변수 타입을 검사함(java의 instanceof)
    • 자바에서는 어떤 변수의 타입을 instancof로 검사한 다음 그 타입에 속한 멤버에 접근하기 위해서는 명시적으로 타입 캐스팅을 해야 함
    • 코틀린에서는 컴파일러가 대신 캐스팅을 해준다, is로 검사하고 나면 굳이 명시적으로 캐스팅하지 않아도 그대로 사용 가능(스마트 캐스트)

    if를 when으로 변경

    • 자바로 작성했다면 매우 길어졌을 코드, 스마트 캐스트와 when, 식이 본문인 함수로 간결하게 작성이 가능

    if와 when의 분기에서 블록 사용

    • if나 when 모두 분기에 블록을 사용할 수 있음

    • 그런경우 블록의 마지막 문장이 블록 전체의 결과가 됨
      블록의 마지막 식이 블록의 결과가 된다

    • 식이 본문인 함수는 블록을 본문으로 가질 수 없고 블록이 본문인 함수는 내부에 return문이 반드시 있어야 함

    댓글

Designed by Tistory.