private void validate(int score) {
if (score < 0) {
throw new BusinessException("에러");
}
}
fun validate(score: Int) {
if (score < 0) {
throw BusinessException("에러")
}
}
코틀린에서 void 와 인스턴스화 할 때 new 생략
private String getPassOrFail(int score) {
if (score >= 50) {
return "P";
} else {
return "F";
}
}
fun getPassOrFail(score: Int): String {
if (score >= 50) {
return "P"
} else {
return "F"
}
}
자바에서 if-else 는 Statement, 코틀린에서는 Expressiond 이다.
차이를 알아보자
int score = 30 + 40;
30 + 40은 70이라는 하나의 결과가 도출된다.
Expression 이면서 Statement이다.
String grade = if (score >= 50) {
"P";
} else {
"F";
}
if else 를 = 으로 한다면 에러가 발생한다.
왜냐하면 if문을 하나의 값으로 취급하지 않기 때문이다.
위 문장이 Statement이다.
String grade = score >= 50 ? "P" : "F";
대표적인 예로 3항 연산자는 if-else 문을 바로 반환할 수 있는 Expression 이다.
fun getPassOrFail(score: Int): String {
return if (score >= 50) {
return "P"
} else {
return "F"
}
}
코틀린은 Expression 이라서 위와 같이 if-else문을 바로 반환할 수 있다.
그러므로 3항연산자가 존재하지 않는다.
👏 TIP : 코틀린에서 범위를 나타내는 경우 if (score in 0..100) {} 으로 표기할 수 있다.
in 앞에 ! 를 붙여 반대의 조건을 설정할 수 있다.
switch (score / 10) {
case 9:
return "A";
...
default:
return "D";
}
return when (score) {
in 90..99 -> "A"
// 조건부 (Expression 가능) -> 어떠한 구문 (Expression 가능)
...
else -> "D"
}
코틀린에서 조건부에는 어떠한 Expression 이라도 들어갈 수 있다.