코틀린 입문 스터디 (4) Control Structures

mook2_y2
5 min readFeb 19, 2019

--

스터디파이 코틀린 입문 스터디 (https://studypie.co/ko/course/kotlin_beginner) 관련 자료입니다.

코틀린 입문반은 Kotlin을 직접 개발한 개발자가 진행하는 Coursera 강좌인 “Kotlin for Java Developers” (https://www.coursera.org/learn/kotlin-for-java-developers) 를 기반으로 진행되며 아래는 본 강좌 요약 및 관련 추가 자료 정리입니다.

목차

(1) Introduction

(2) From Java to Kotlin

(3) Basics

(4) Control Structures

(5) Extensions

(6) 실습 : Mastermind game

(7) Nullability

(8) Functional Programming

(9) 실습 : Mastermind in a functional style, Nice String, Taxi Park

(10) Properties

(11) Object-oriented Programming

(12) Conventions

(13) 실습 : Rationals, Board

(14) Inline functions

(15) Sequences

(16) Lambda with Receiver

(17) Types

(18) 실습 : Game 2048 & Game of Fifteen

1. Conditionals : if & when (4m)

val max = if (a > b) a else b
  • Java에서는 모든 제어문 (ex: 조건문, 반복문)이 statement이지만, Kotlin에서는 반복문만 제외하고는 모두 Expression입니다. (Ex: if, when) 이에 따라 값을 반환하므로 변수에 할당하는 형태로 작성할 수 있습니다. (관련 링크 : statement와 expression)
  • Kotlin의 when은 위에서 부터 내려오며 만족하는 조건에 도달할 경우 바로 값이 반환되고 종료되어 break 를 사용하지 않아도 되어 간결성을 개선할 수 있습니다.
  • 또한 when은 비교 연산자 (ex: =, !=, >, >= 등) 외에도 is를 통해 타입체크 및 smart cast를 할 수 있고, in을 통해 특정 구간에 있는지 여부를 체크할 수 있습니다. smart casts란 is를 통해 변수의 타입을 체크하는 경우 그 이후 해당 변수는 자동적으로 해당 타입으로 캐스팅 되는 기능입니다. (관련 링크 : Kotlin 키워드 및 연산자 해부 Part 1의 6번 항목 참고)
fun updateWeather(degrees: Int, isSnowing : Boolean) { 
val (description, colour) = when {
isSnowing -> "snowing" to WHITE
degrees < 5 -> "cold" to BLUE
degrees < 23 -> "mild" to ORANGE
else -> "hot" to RED
}
}
  • when을 argument 없이 사용하면서 다양한 비교문을 자유롭게 사용할 수 있습니다.

2. Loops (3m) / ‘in’ checks & ranges (3m)

  • Kotlin의 for 문에서 list, map, string을 iterate 할 수 있습니다. list의 경우 withIndex()라는 함수를 통해 iterate시에 index값을 사용할 수 있습니다.
  • .., until, downTo, step등을 통해 특정 구간을 다양한 방식으로 iterate 할 수 있습니다.
  • 문자 (char) 또는 문자열 (string)에 대해서도 ..를 통해 range를 확인할 수 있는데 이 경우 사전식 순서 (lexicographical order)에 따라 처리됩니다. (Java와 Kotlin에서 String에 대한 compareTo() 함수와 동일하게 동작)
  • 사전식 순서 비교란 문자열을 제일 앞 문자부터 하나씩 비교하며, 다른 문자가 나오는 경우 unicode 기반으로 비교하는 것을 뜻합니다. (관련 링크 : Java compareTo 메소드)

4. Checking Identifier 예제 및 답안 (15m + 3m)

  • 생략

5. Exceptions (3m)

  • Java에서는 함수에 checked exception(체크 예외)이 정의되어 있는 경우, 그 함수를 사용할 때 catch문 또는 throws 사용을 강제합니다. 하지만 이에 대해 개발자들은 대부분 다시 throws를 던지거나 catch문을 쓰되 처리하지는 않고 무시하는 코드를 작성하는 경우가 빈번합니다.
  • 형식적이며 코드 품질 향상에 크게 기여하지 않는다는 부정적 견해가 많으며, 이에 따라 Kotlin은 실용적과 간결성 측면에서 checked exception 처리를 강제하지 않습니다. (관련 링크 : Java에서 Checked Exception은 언제 써야 하는가?)

--

--