[kotlin] 제어문

백현균·2023년 4월 8일
0

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("홀수임")
}

0개의 댓글