스터디파이 코틀린 입문 스터디 (https://studypie.co/ko/course/kotlin_beginner) 관련 자료입니다.
코틀린 입문반은 Kotlin을 직접 개발한 개발자가 진행하는 Coursera 강좌인 “Kotlin for Java Developers” (https://www.coursera.org/learn/kotlin-for-java-developers) 를 기반으로 진행되며 아래는 본 강좌 요약 및 관련 추가 자료 정리입니다.
목차
(9) 실습 : Mastermind in a functional style, Nice String, Taxi Park
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은 언제 써야 하는가?)