4. 흐름 제어 구문과 연산자
1) if 표현식
- 조건식이 true일 경우 지정된 연산을 수행
- 코틀린에서는 구문이 아닌 표현식
- 값 대입시 else 생략 불가
- 형식
if(조건식1) 문장1
[if else(조건식2) 문장2]
[else 문장3]
fun checkOdd(count : Int): Boolean{
val result = if(count%2 == 0){
println("짝수")
0
} else {
println("홀수")
1
}
return result == 1
}
fun main() {
println(checkOdd(11))
println(checkOdd(32))
}
2) when 표현식
- switch 구문과 비슷하나 정수 이외의 다양한 타입을 대입 가능한 표현식
- 형식
when (값){
조건1 -> 문장
조건2 -> 문장
else -> 문장 // 생략 가능
}
fun when1(num : Int): String{
when {
num < 1 -> return "minus"
num > 5 -> return "many"
}
return when(num){
1 -> "one"
2 -> "two"
3 -> "three"
4 -> "four"
in 5..10 -> "many"
!is Int -> "NaN"
else -> "etc"
}
}
fun when2(num : Int): String{
return when(when1(num)){
"one" -> "spring"
"two" -> "summer"
"three" -> "fall"
"four" -> "winter"
else -> "nothing"
}
}
fun when3(num : Int){
when(when2(num)){
"spring", "fall" -> println("good")
"summer", "winter" -> println("Oh...")
}
}
fun main() {
when3(1)
when3(2)
when3(5)
}
// 결과
good
Oh...
3) for 반복문
- 지정된 구간에서 조건에 따라 연산을 실행하는 구문
- 형식
for(반복조건) { }
fun main() {
for(i in 1..5) print("$i ") // 1 2 3 4 5
for(i in 1 until 5) print("$i ") // 1 2 3 4
for(i in 1..5 step 2) print("$i ") // 1 3 5
for(i in 5 downTo 1) print("$i ") // 5 4 3 2 1
val list = listOf("a","b","c")
for(i in list) print("$i ") // a b c
for(i in list.indices) print("$i ") // 0 1 2
for((i, v) in list.withIndex()) print("$i=$v ") // 0=a 1=b 2=c
}
4) while 반복문
- 조건이 맞는 동안 반복해서 연산을 실행하는 구문
- 형식
while(조건) { }
fun main() {
var count = 5
while(count > 0) print(count--)
do { print(count++) }
while(count <= 5)
}
// 결과
54321012345
5) 전개연산자
- 배열을 단순하게 나열할 때 사용
- 배열에만 적용할 수 있기 때문에 List에 사용시 toTypedArray() 함수를 이용한다.
fun pr(vararg data: String) = data.forEach { print(it) }
fun main() {
val arr = arrayOf("a", "b", "c")
pr(*arr) // 결과: abc
val arr2 = listOf(*arr, "d", "e")
pr(*arr2.toTypedArray()) // 결과: abcde
val arr3 = arrayOf(*arr2.toTypedArray(), "f", "g")
pr(*arr3) // 결과: abcdefg
}
6) Null 안전 관련 연산자
- 코틀린은 Null 처리가 엄격해서 다양한 연산자를 제공한다(? ?: ?. !!)
- val num: Int? => num 변수를 null 허용으로 선언
- A ?: B => A가 null이면 B 실행
- A?.length => A가 null이 아니면 length
- A !! B => A가 null이 아닐 때만 B 실행(null일 시 예외 발생)
7) 기타
- 비트 연산자가 없고 함수로 사용 가능하다.
- 삼항 연산자와 논리 연산자 & | 도 제공하지 않는다.
'프로그래밍 > Kotlin' 카테고리의 다른 글
[Kotlin 요약 정리] 6. 프로퍼티 (0) | 2019.04.09 |
---|---|
[Kotlin 요약 정리] 5. 클래스 (0) | 2019.04.08 |
[Kotlin 요약 정리] 3. 데이터 타입 (0) | 2019.04.08 |
[Kotlin 요약 정리] 2. 변수와 함수 (0) | 2019.04.08 |
[Kotlin 요약 정리] 1. 코틀린 기본 (0) | 2019.04.08 |