fun main() {
val a = 12
val b = 7
val max = if (a > b) {
a // max 에 a 할당
} else {
b // max에 b 할당
}
}
코틀린에서는 위와 같이 마지막 식인 값은 max에 할당되도록 코드를 작성할 수 있습니다.
else if (score >= 80.0 && score <= 89.9)
else if (score in 80.0 .. 89.9)
지금은 80~89.9점의 예시지만 점수가 많아지면다면 else if에 조건을 쓰는 것이 많아질 것인데요. 이 때 변수 이름 in 시작 값 ... 마지막 값
을 사용하여 간략하게 만들 수 있습니다.
when (x) {
1 -> print("x == 1")
2 -> print("x == 2")
else -> {
print("x는 1, 2가 아닙니다")
}
}
when문은 다른 언어에서 switch~case문과 비슷하지만 각 case를 멈추는 break가 필요하지 않습니다.
when (x) {
1, 2 -> print("x == 1")
else -> {
print("x는 1, 2가 아닙니다")
}
}
만약 일치되는 조건을 한 번에 여러 개 표현하면 ,
를 이용해서 위와 같이 표현할 수도 있습니다.
when (x) {
in 1..10 -> print("x는 1 이상 10 이하 입니다.")
!in 10..20 -> print("x는 10이상 20 이하의 범위에 포함되지 않습니다.")
else -> print()
}
when과 in을 써서 편리하게 범위 구간을 설정할 수 있습니다. 그리고 !in
을 사용하면 설정한 범위 이외의 범위들이 포함됩니다.(즉, 10보다 작거나, 20보다 큰 값의 범위)
val str = "안녕하세요!"
val result = when(str) {
is String -> "문자열 입니다."
else -> false
}
is 키워드를 사용하면 특정 자료형을 검사할 수 있습니다. when문과 is 키워드를 잘 사용하면 어던 변수에 할당된 값의 자료형을 검사하여 자료형에 따라 문장을 실행하도록 프로그램을 구성할 수 있습니다. 즉, 위의 코드도 str의 자료형이 String인지 검사하고 실행문의 결과를 return 합니다.
for (x in 1..5) { // 1~5 출력
print(x) // "12345"
}
for (x in 5..1) {
print(x) // 아무것도 출력되지 않음
}
for (x in 5 downTo 1) {
print(x) // "54321" 역순으로 출력
}
for (x in 1..5 step 2) {
print(x) // "135"
}
for (x in 5 downTo 1 step 2) {
print(x) // "531"
}
코틀린의 반복문 문법은 단순하면서도 처음 써보는 입장에서는 헷갈릴만한 내용이라 정리해보았습니다. 자주 사용해보면서 적응해보면 금방 익숙해질 것 같습니다.
fun cases(obj: Any) {
when (obj) {
1 -> println("Int: $obj")
"Hello" -> println("String: $obj")
is Long -> println("Long: $obj")
else -> println("Unknown")
}
}
fun main() {
cases("Hello")
cases(1)
cases(5L)
}
Any
를 사용하면 다양한 자료형의 인자를 받을 수 있습니다. Java로 치면 Object 같은 느낌이라고 생각할 수 있습니다.
fun hello(name: String): Unit {
return Unit
}
코틀린에서 값 없이 return만 하는 경우에는 Unit
을 사용합니다. 즉, Unit은 자바 언어에서 반환값이 없는 경우 사용하는 void와 비슷합니다.
class InvalidNameException(message: String): RuntimeException(message)
사용자 정의 예외는 자바와 똑같기에 간단하게 정리하려 합니다.