-
[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 문을 실행
스마트 캐스트
- 코틀린에서는 is를 사용해 변수 타입을 검사함(java의 instanceof)
- 자바에서는 어떤 변수의 타입을 instancof로 검사한 다음 그 타입에 속한 멤버에 접근하기 위해서는 명시적으로 타입 캐스팅을 해야 함
- 코틀린에서는 컴파일러가 대신 캐스팅을 해준다, is로 검사하고 나면 굳이 명시적으로 캐스팅하지 않아도 그대로 사용 가능(스마트 캐스트)
if를 when으로 변경
- 자바로 작성했다면 매우 길어졌을 코드, 스마트 캐스트와 when, 식이 본문인 함수로 간결하게 작성이 가능
if와 when의 분기에서 블록 사용
if나 when 모두 분기에 블록을 사용할 수 있음
그런경우 블록의 마지막 문장이 블록 전체의 결과가 됨
식이 본문인 함수는 블록을 본문으로 가질 수 없고 블록이 본문인 함수는 내부에 return문이 반드시 있어야 함
'Computer Science > Kotlin' 카테고리의 다른 글
[Kotlin] 함수 정의와 호출 (0) 2021.01.19 [Kotlin] 코틀린 기초 - 반복문 (0) 2021.01.17 [Kotlin] 코틀린 기초 - 클래스, 프로퍼티 (0) 2021.01.17 [Kotlin] 코틀린 기초 - 함수, 변수 (0) 2021.01.17 [Kotlin] 코틀린이란 무엇이고 왜 필요할까 (0) 2021.01.17