1. if절
fun validateScore(score:Int){
if(score < 0)
throw IllegalArgumentException("0보다 작을 수 없다.")
}
fun getPassOrFail(score:Int):String{
if(score >= 50)
return "p"
else
return "f"
}
자바와 표현 방식이 동일
2. Expression, Statement
자바에서는 if-else는 Statement, 코틀린에서는 Expression
Statement: 프로그램의 문장 전체를 의미, 하나의 값으로 도출되지 않음
Expression: 하나의 값으로 도출되는 문장
자바에서는 if-else문을 하나의 값으로 취급하지 않기 때문에 조건절을 변수에 대입 불가 -> 대신 삼항연산자 제공
코틀린에서는 if-else문을 Expression이기때문에, 변수 대입 가능 -> 값으로 취급
return if(score > = 0) "P"
else "F"
* if문을 삼항연산자처럼 사용 가능
조건문 처리 예시
자바
private String getGrade(int score){
if(score >= 90)
return "A";
else if(score >= 80)
return "B";
else if(score > =70)
return "C";
else return "D";
}
코틀린 - if-else문을 하나의 값으로 취급 가능
fun getGrade(score:Int) : String{
return if(score >= 90)
"A"
else if(score >= 80)
"B"
else if(score > =70)
"C"
else "D"
}
조건문에서 조건들 처리 예시
자바
if(0 <= score && score <= 100){...}
코틀린
if(score !in 0..100) -> 0~100사이에 값이 없을 경우
if(score in 0..100) -> 0~100사이에 값이 있을 경우
3. case when
자바에서의 switch-case문이라고 생각하면됨
코틀린에서는 switch-case대신 case-when이라는 개념이 등장
특히나, enum, sealed클래스에서 빛을 바램
예시
fun getGradeWithCase(score:Int):String {
return when(score / 10){
9 -> "A"
8 -> "B"
7 -> "C"
else -> "D"
}
}
fun getGradeWithCase(score:Int):String {
return when(score){
in 90..99 -> "A"
in 80..89 -> "B"
in 70..79 -> "C"
else -> "D"
}
}
어떠한 expression든 조건으로 들어갈 수 있다.
when(obj){
is String -> obj.startWith("A")
}
스마트 캐스트에 의해 바로 형변환 후 관련 함수 사용 가능
다중 조건에 대한 처리도 가능
when(number) {
// number가 1,0,-1일 경우의 조건
1, 0, -1 -> println("true")
// 그 이외의 숫자일 경우
else -> prontln("false")
}
when에 값이 없을 경우
when {
number == 0 -> println("입력 값 0 ")
number % 2 == 0 -> println("짝수임")
else -> println("홀수임")
}