섹션2 코틀린에서 코드를 제어하는 방법
5강 코틀린에서 제어문을 다루는 방법
Java는 If 조건문이 Expresison 이지만 Kotlin에서는 Statement이다.
마치 삼항연산자처럼 조건문 자체가 값이기 때문에 바로 반환할 수 있다.
fun getPassOrFail(score: Int): String {
if (score >= 50) {
return "P"
} else {
return "F"
}
}
// 둘은 완전히 같은 코드
fun getPassOrFail2(score: Int): String {
return if (score >= 50) {
"P"
} else {
"F"
}
}
Kotlin
조건문에서 in
Java에서 if(0 < score && score < 100)
로 표현하던 것을 Kotlin에서는 if (score in 0..100)
로 표현할 수 있다.
아래와 같이 변수 자체를 받아서 내부에서 조작 가능.. 너무 사기
fun getGradeWithSwitch2(score: Int): String {
return when (score) {
in 90..99 -> "A"
in 80..89 -> "B"
in 70..79 -> "C"
else -> "D"
}
}
타입을 확인하는 is를 응용 가능함
fun startsWithA(obj: Any): Boolean {
return when (obj) {
is String -> obj.startsWith("A")
else -> false
}
}
when은 EnumClass 혹은 Sealed Class와 함께 사용할 경우, 더욱더 진가를 발휘함
2강 코틀린에서 반복문을 다루는 방법
for-each문
Java에선 :
를 사용하지만 Kotlin에선 in
을 사용한다.
Java
List<Long> numbers = Arrays.asList(1L, 2L, 3L);
for (long number : numbers) {
System.out.println(number);
}
Kotlin
val numbers = listOf(1L, 2L, 3L)
for (number in numbers) {
println(number)
}
전통적인 for문
Java
for (int i = 1; i <= 3; i++) {
System.out.println(i);
}
Kotlin
for (i in 1..3) {
println(i)
}
내려가는 경우는 좀 다름
for (i in 3 downTo 3) {
println(i)
}
2씩 올라가거나 내려가는 경우 step
사용
for (i in 1.. 5 step 2) {
println(i)
}
.. 연산자 : 범위를 만드는 클래스 IntRange 클래스
while은 사용법이 완전히 동일하다.
7강 코틀린에서 예외를 다루는 방법
대부분 똑같음. 다만 if와 같이 try 구문도 바로 Return이 가능함
fun parseIntOrThrowV2(str: String): Int? {
return try {
str.toInt()
} catch (e: NumberFormatException) {
null
}
}
Kotlin에서는 Checked Exception
과 UnchekedException
을 구분하지 않는다
.
모두 UncheckedException이다
.
그렇기 떄문에 메서드에서 발생할 수 있는 예외인 throws를 작성하지 않음
코틀린에서는 try resources
가 사라지고 use(확장함수)
를 사용한다. -> 추후 섹션4에서 자세히 다룰 예정
8강 코틀린에서 함수를 다루는 방법
Kotlin에서 함수가 하나의 결과값이라면 block
{}
대신 =
사용 가능하다.
함수는 ~ 이거야라는 의미
반환 값이 추론 가능하므로 생략이 가능함
또한 아래와 같이 Block을 생략하고 =을 사용했으므로 반환 타입이 생략 가능함
fun max(a: Int, b: Int) = if (a > b) a else b
Java에서는 기본 값이라는 개념이 없고 오버로딩을 사용했지만 Kotlin에서는 메서드에서 기본값을 설정할 수 있음
그리고 Kotlin에서 오버로딩도 사용 가능하다.
fun repeat(
str: String,
num: Int = 3,
useNewLine: Boolean = true
) {
for (i in 1..num) {
if (useNewLine) {
println(str)
} else {
print(str)
}
}
}
특정 값만을 설정하고, 나머지는 기본값 그대로 사용하고 싶다면 매개변수를 직접 지정할 수 있음
repeat("Hello", useNewLine = false)
// repeat("Hello", default값, false)
그렇기 때문에 builder가 필요가 없어짐
다만 Kotlin에서 Java 함수를 가져다 사용할 때는 named argument를 사용할 수 없음
가변인자
Java에서는 ...
을 사용했지만 Kotlin에서는 vararg
를 사용하여 가변인자를 표시함
Java에서는 배열 그대로를 넘겨서 사용 가능했지만 Kotlin에서는 배열을 넣을 때 *
를 배열 앞에 붙여줘야함
val array = arrayOf("a", "b", "c")
printAll(*array)
'Kotlin > 입문편' 카테고리의 다른 글
Java 개발자를 위한 Kotlin 입문 3. 코틀린에서의 OOP와 FP (0) | 2024.04.24 |
---|---|
Java 개발자를 위한 Kotlin 입문 1. 코틀린에서 변수와 타입, 연산자 (0) | 2024.04.21 |