if문
- Java의 if문과 동일하다.
fun getPassOrFail(score: Int) : String {
if(score >= 50){
return "P"
}else{
return "F"
}
}
Expression & Statement
- if문은 Java에서는
Statement
지만 KotlinExpression
이다.문장(Statement)
: 프로그램의 문장, 하나의 값으로 도출되지 않는다.표현식(Expression)
: 하나의 값으로 도출되는 문장- 문장이 표현식을 포함하는 관계
- Java의 3항연산자는 expression이면서 statement
- Kotlin에서는 if문도 expression기 때문에 3항연산자가 없다.
fun getPassOrFail(score: Int) : String {
return if(score >= 50){ // if문도 expression이기 때문에 바로 반환
"P"
}else{
"F"
}
//return score >= 50? "P" : "F"; //Java 3항연산자
}
범위 조건 확인하기 (in)
in
을 이용하여 between 을 사용하듯이 범위 조건을 지정할 수 있다.
fun validateScoreIsNotNegative(score: Int){
if(score !in 0..100){
throw IllegalArgumentException("${score}는 0보다 작을 수 없습니다");
}
}
switch와 when
- 코틀린에서는
switch-case
문이 없고when
문이 이를 대체한다. - 조건부에서 특정 값이 아닌 expression으로 분기처리
- case 표기 없이 바로
조건부 → 구문
표기 - 조건부에는 어떠한 expression이라도 들어갈 수 있다.
is Type
in..
- case 표기 없이 바로
- default 는
else
로 대체 - when 에 대입 없이 early return 처럼 활용도 가능
- 추후에
Enum Class
와Sealed Class
와 사용할 경우 더 진가를 발휘한다.
/**
when(값){
조건부 -> 구문
조건부 -> 구문
else -> 구문
}
*/
fun getGrade(score: Int): String? {
return when (score / 10) { // 특정값을 조건으로 분기처리
9 -> "A"
8 -> "B"
7 -> "C"
else -> "D"
}
}
fun getGrade2(score: Int): String? {
return when (score) { // 특정값의 범위를 조건으로 분기 처리
in 90..99 -> "A"
in 80..89 -> "B"
in 70..79 -> "C"
else -> "D"
}
}
fun startsWithA(obj:Any): Boolean{
return when(obj){ // is를 이용하여 타입 체크
is String -> obj.startsWith("A")
else -> false
}
}
fun judgeNumber(number:Int){
when(number){ // 특정 값들일 경우 분기 처리
1,0,-1 -> println("유효한 숫자입니다.")
else -> println("유효하지 않은 숫자입니다.")
}
}
fun judgeNumber2(number: Int){
when { // when 에 대입 없이 early return 처럼 활용
number == 0 -> println("주어진 숫자는 0입니다.")
number % 2 == 0 -> println("주어진 숫자는 짝수입니다.")
else -> println("주어진 숫자는 홀수입니다.")
}
}
Reference
'Program > Kotlin' 카테고리의 다른 글
[Kotlin] 7. 예외 처리 (try-catch, unchecked Exception, try with resources, use) (0) | 2022.09.27 |
---|---|
[Kotlin] 6. 반복문 (for, foreach, while, Progression, Range) (0) | 2022.09.13 |
[Kotlin] 4. 연산자 (단항연산자, 산술연산자, 비교연산자, 논리연산자, 동등성, 동일성, 연산자 오버로딩) (0) | 2022.09.13 |
[Kotlin] 3. Type (기본타입, 타입캐스팅, Any, Unit,Nothing, trimIndent) (1) | 2022.09.11 |
[Kotlin] 2. Null 처리 (Safe Call, Elvis 연산자) (0) | 2022.09.09 |