728x90
반응형

이번에는 흐름제어에 대해서 알아보겠습니다.


흐름제어에는 제어문에 해당하는 if, when이 있고 반복문에 해당하는 for, while이 있습니다.

자바와 다른점은 switch가 보이지 않고 새로운 when이 생겼다는 것입니다.


제어문이란 조건이 참이면 해당 분기로 들어가서 코드를 수행하는 것이고

반복문이란 조건이 참이면 해당 분기로 들어가서 코드를 수행하고 조건이 거짓이 될 때 까지 코드를 반복해서 수행하는 것입니다.


if는 총 3개의 형태를 가지고 있습니다.

  1. if
  2. if...else
  3. if...else if...else
if는 ()안에 조건이 참일 경우에 {}안에 코드를 실행하는 조건문입니다.
if else는 바로 위의 if나 if else가 거짓이고 ()안에 조건이 참일 경우에 {}안에 코드를 실행하는 조건문입니다.
else는 if나 if else가 모두 거짓일 경우 처리하는 조건문 입니다.

var score = 100
if (score >= 90) {
println("A")
} else if (score >= 80) {
println("B")
} else if (score >= 70) {
println("C")
} else {
println("D")
}

위 코드는 score가 

90 이상이면 A

80 이상이면 B

70 이상이면 C

그 외에는 D를 출력하는 코드입니다.



when은 switch의 확장판이라고 보면 좋을 것 같습니다.

val x = 1
when (x) {
1 -> print("x == 1")
2 -> print("x == 2")
else -> { // Note the block
print("x is neither 1 nor 2")
}
}

위 코드를 보면서 switch와 다른점을 보겠습니다.

- switch가 when으로 변경

- case 1:이 1로 변경

- ->가 새로 추가

- break; 사라짐

- default가 else로 변경

입니다.


when (x) {
0, 1 -> print("x == 0 or x == 1")
else -> print("otherwise")
}

또한 ,를 사용해서 여러개 조건을 동시에 처리 할 수도 있습니다.

마치 break를 사용하지 않고 여러개 case를 처리하는 것과 같다고 볼수 있습니다.


val x = 1
val s = "1"
when (x) {
parseInt(s) -> print("s encodes x")
else -> print("s does not encode x")
}

자바에서는 case에 들어가는 값들은 상수만 가능했지만 when에서는 함수의 결과값을 넣을 수 있습니다.


val x = 5
val validNumbers = ArrayList<Int>()
validNumbers.apply {
add(30)
add(40)
add(50)
}
when (x) {
in 1..10 -> print("x is in the range")
in validNumbers -> print("x is valid")
!in 10..20 -> print("x is outside the range")
else -> print("none of the above")
}

in 키워드를 사용하면 범위의 값을 확인 할 수 있습니다.

apply는 나중에 설명하겠습니다.



for는 자바에 있는 for-each 문과 비슷합니다.

val validNumbers = ArrayList<Int>()
validNumbers.apply {
add(10)
add(20)
add(30)
add(40)
add(50)
}

for (item in validNumbers) {
println(item)
}

validNumbers에 있는 값들을 item에 첫 번째부터 넣어서 가져옵니다.


for (i in validNumbers.indices) {
println(i)
}

만약 인덱스 값을 가져오고 싶다면 indices값을 사용합니다.


for ((index, value) in validNumbers.withIndex()) {
println("index: ${index}, value: ${value}")
}

index와 value를 같이 가져오고 싶다면 withIndex()를 사용해서 가져올 수 있습니다.



while은 ()안에 값이 참인 경우에 동작하는 반복문 입니다.

자바에 있는 것과 동일하게 사용하시면 됩니다.

var i = 0
while (i < 10) {
println(i)
i++
}

while

var i = 0
do {
println(i)
i++
} while (i < 10)

do while


728x90
반응형

'Language > Kotlin' 카테고리의 다른 글

(Kotlin) Break, Continue  (0) 2017.10.06
(Kotlin) Scanner로 입력받기  (2) 2017.07.12
(Kotlin) 속성 기본 타입  (0) 2017.07.06
(Kotlin) IntelliJ 프로젝트 생성하기  (0) 2017.07.06
(Kotlin) 코틀린이란  (0) 2017.07.06

+ Recent posts