모든 프로그래밍 언어는 Control flow가 있습니다.

무엇인가를 판단하여 사실인지 아닌지(true or false)를 반환(return)하는 코드입니다.

예를 들어 2에서 1을 빼면 1인가요? 라는 질문에 사실(true)이라고 반환(return)하겠지요. 

이러한 코드들을 Conditional expressions라고 합니다.

 

Conditional expressions

Kotlin은 Conditional expressions(조건)를 확인하기 위해 if와 when을 제공합니다. 

 

If expression

if 표현은 간단합니다.

// 조건이 사실(true)이면 해야할일 수행
// 아니면 아무것도 하지 않음
if(조건) {
	해야할일
}

// 조건이 사실이면(true) 해야할일 수행
// 조건이 사실이 아니면(false) 이면 다른일 수행
if(조건) {
	해야할일
} else {
	다른일
}

// 조건1이 사실이면(true) 해야할일1 수행
// 조건2가 사실이면(true) 해야할일2 수행
// 조건1과 조건2가 모두 사실이 아니면(false) 해야할일3 수행
if(조건1) {
	해야할일1
} else if(조건2) {
	해야할일2
} else {
	해야할일3
}

 

if(조건)은 조건의 사실여부에 따라 값을 반환하며, 그 값은 true 또는 false 입니다.

조건이 사실이면(true)이면, { } 안의 내용을 수행합니다.

조건을 여러개 확인하는 경우에는 else if(조건)을 사용할 수 있습니다. if문의 조건은 순차적으로 확인하여 진행하기 때문에, 앞의 조건이 true이면 그 아래 조건은 무시됩니다. else if(조건)은 계속 추가하여 여러개의 조건을 확인 할 수 있습니다.

Kotlin에는 JVM에 기반하지만 tenary operator, 삼항연산자(condition ? then : else)를 사용하지 않습니다.

대신, Kotlin에서는 ? operator에 Null safety를 위한 주요한 역할을 부여했습니다. 

 

if문에 대한 여러가지 표현식을 살표보겠습니다. ※해야할일 Code가 1 line이면 {}을 생략할 수 있습니다.  

val a = 3
val b = 2

var max = a
// b가 a보다 크면 max를 b로 바꿉니다.
// a와 b중 큰 수가 max값이 됩니다.
if(a < b) max =b

// else 구문 사용
if (a > b) {
	max = a
} else {
    max = b
}

// 간단히 줄이기
max = if(a > b) a else b

 

 

when expression

when은 확인하는 조건이 여러개일때 사용합니다. 

when 구문은 크게 2가지 형태로 표현할 수 있습니다.

when(조건) {} 또는 when {} 형태입니다.

when은 {} 안에 ->를 사용하여 각 컨디션에 대한 분기문을 표현합니다.

else if와 마찬가지로 분기는 순차적으로 확인되며 true가 되는 분기문을 실행하고 나머지는 무시됩니다.

만약 분기문 전체가 true가 아니면 else 구문이 실행됩니다.

fun main() {
	prinln("프로야구팀을 입력하세요.")
	val team = readln() // 입력창으로 부터 읽어드림

	// 조건 구문
	when(team) {
		"LG" -> println("서울")
		"KT" -> println("수원")
		"SSG" -> println("인천")
		"NC" -> println("창원")
		"두산" -> println("서울")
		"KIA" -> println("광주")
		"롯데" -> println("부산")
		"삼성" -> println("대구")
		"한화" -> println("대전")
		"키움" -> println("서울")
		else -> println("모르겠어요.")
	}
    
	// 결과가 같은 경우에는 조건을 합쳐서 표현할 수 있음
	when(team) {
    	// LG 또는 두산 또는 키움인 경우
		"LG","두산","키움" -> println("서울")
		"KT" -> println("수원")
		"SSG" -> println("인천")
		"NC" -> println("창원")
		"KIA" -> println("광주")
		"롯데" -> println("부산")
		"삼성" -> println("대구")
		"한화" -> println("대전")
		else -> println("모르겠어요.")
	}     

	// 표현 구문
	when {
		team == "LG" -> println("서울")
		team == "KT" -> println("수원")
		team == "SSG" -> println("인천")
		team == "NC" -> println("창원")
		team == "두산" -> println("서울")
		team == "KIA" -> println("광주")
		team == "롯데" -> println("부산")
		team == "삼성" -> println("대구")
		team == "한화" -> println("대전")
		team == "키움" -> println("서울")
		else -> println("모르겠어요.")
	}

	//공통된 println을 밖으로...
	val city = when {
		team == "LG" -> "서울"
		team == "KT" -> "수원"
		team == "SSG" -> "인천"
		team == "NC" -> "창원"
		team == "두산" -> "서울"
		team == "KIA" -> "광주"
		team == "롯데" -> "부산"
		team == "삼성" -> "대구"
		team == "한화" -> "대전"
		team == "키움" -> "서울"
		else -> "모르겠어요."
	}
	println(city)
}

 

※ Kotlin 공식 사이트에서는 if문과 when 문 중 하나를 선택해야 하는 경우 when을 사용하도록 권장합니다.

 

 

+ Recent posts