1. 코틀린에서의 if else
fun validateScoreIsNotNegative(score : Int){
if(score !in 0..100){
throw IllegalArgumentException("${score}의 범위 이상")
}
}
자바에서의 if else문과 차이가 없다.
위에서 주의할 점은 자바에서는 if(score <0 && score>100) 이렇게 표현했다면,
위의 코드처럼 0..100 이렇게 표현할 수 있다.
또 다른 예시를 살펴보자!
fun getPassOrFail(score : Int) : String {
return if(score > 50) {
"P"
}else{
"F"
}
}
여기서 자바하고와의 차이점을 발견할 수 있다.
자바에서 if~else는 Statement이지만,
코틀린에서는 Expression이다.
즉, 하나의 값으로 도출되는 문장을 사용한다.
-> 위와 같이 바로 return이 가능하여 코틀린에서는 자바처럼 삼항연산자가 필요없다!!
자바에서는 String test = return if (score>50) "P" 이러한 식이 불가능하였지만
코틀린에서는 위의 코드처럼 가능하다!!!
2. when
//when
//이도 하나의 익스프레션이기 때문에 한번에 return가능
//switch 대신 when
// case대신 화살표로 표시하면 됨.
//default 대신 else로 사용해야함
fun getGradeWithSwitch(score : Int): String{
return when(score/10){
9 -> "A"
8 -> "B"
7 -> "C"
else -> "D"
}
}
자바에서 switch case문 대신 코틀린에서는 when을 사용한다.
위의 코드처럼 해당하는 값 -> return되는 값 이런식으로 표현한다!
//when에 조건부에는 어떠한 expression이 들어갈 수 있다(ex. is Type)
//따라서 다음과 같은 코드가 가능함
fun startsWithA(obj : Any): Boolean{
return when (obj){
is String -> obj.startsWith("A")
else -> false
}
}
위의 코드와 같이 Type하고 비교할 수도 있다!
is Type으로 작성하면 된다!!
fun judgeNumber(number: Int){
when(number){
1,0,-1 -> println("ㅎㅎ")
else -> println("1, 0, -1 이 아닙니다.")
}
}
자바에서는 위의 코드를 if(number==1 || number==0 .... ) 이렇게 표현해야 했지만
코틀린으로는 위의 코드처럼 편리하게 작성 가능하다!
여러 값이 해당하는 경우는 콤마로 분리하여 구분할 수 있다!
fun judgeNumber2(number: Int){
when{
number == 0 -> println("0")
number % 2 == 0 -> println("짝")
else -> println("홀")
}
}
fun getGradeWithSwitch1(score : Int): String{
return when(score){
in 90..99 -> "A"
in 80..89 -> "B"
in 70..79 -> "C"
else -> "D"
}
}
마지막으로, 자바에서 switch케이스문은 단 하나의 값으로 떨어지는 경우에만 사용하였지만
이렇게 when 안에 계산식을 넣어 if문처럼 사용할 수도 있다!!
정리하자면 자바에서의 switch는 kotlin에서 when으로 대체되었고,
when은 switch문보다 더 강력한 기능을 갖는다!!!!!
'Kotlin > Basic' 카테고리의 다른 글
[Kotlin/Basic] 코틀린에서의 예외처리 (0) | 2022.08.13 |
---|---|
[Kotlin/Basic] 코틀린에서의 반복문 (0) | 2022.07.27 |
[Kotlin/Basic] 코틀린에서의 연산자 (0) | 2022.07.22 |
[Kotlin/Basic] 코틀린에서의 Type (0) | 2022.07.21 |
[Kotlin/Basic] 들어가며, val/var 차이, 코틀린에서의 null (0) | 2022.07.20 |