안녕하세요, 반갑습니다!
지난번에 코틀린의 제어문 중에 조건문인 if() 와 when() 에 대해 정리해봤습니다.
그럼 제어문의 나머지, 반복문에 대해서도 정리해봐야겠죠?
그래서 오늘 그 두가지에 대해 정리해보겠습니다.
for() 와 while()
1. for()
for() 는 대표적인 반복문 함수입니다.
많은 프로그래밍 언어에서도 반복문으로 쓰고 있는데요.
코틀린에서는 어떻게 사용할 수 있을까요?
먼저 코틀린 for()의 원형입니다.
forStatement (used by loopStatement)
: 'for'
'(' annotation* (variableDeclaration | multiVariableDeclaration) 'in' expression ')'
controlStructureBody?
;
사용법은 자바의 향상된 for() 인 foreach() 와 매우 흡사합니다.
다만 구분자로 'in' 을 사용한다는 것이 다릅니다.
아래 소스처럼 'downTo' 를 사용하여 감산할 수도 있고, 'step' 으로 증감할 크기를 지정할 수 있습니다.
//구분자로 'in' 을 사용.
for (i in 1..3) { //0~3 까지 총 4번 반복
println(i)
}
for (i in 6 downTo 0 step 2) { //6에서 0까지 2씩 감소
println(i)
}
배열 또는 리스트의 경우 이렇게 작성할 수 있습니다.
배열 또는 리스트이 크기를 가져오는 함수를 사용하여 그 크기만큼 반복합니다.
for (i in array.indices) { //배열 또는 리스트의 크기만큼
println(array[i])
}
아니면, 배열 또는 리스트의 withIndex() 함수를 이용할 수 있는데요.
그 배열 및 리스트의 index와 value를 반복 출력 할 수 있습니다.
for ((index, value) in array.withIndex()) {
println("the element at $index is $value")
}
2. while()
반복할 범위를 알고 있으면 for() 를 쓰지만, 모르는 경우 조건이 만족할 때까지 반복하는 반복문입니다.
while() 의 원형입니다.
whileStatement (used by loopStatement)
: 'while' '(' expression ')' controlStructureBody
| 'while' '(' expression ')' ';'
;
그리고 do-while()의 원형입니다.
doWhileStatement (used by loopStatement)
: 'do' controlStructureBody? 'while' '(' expression ')'
;
사용법입니다.
기존 자바와 별다를게 없습니다.
for() 와 다르게 특정 조건을 만족할 때까지 무한 반복하기 때문에 반드시 빠져나가야할 코드가 있어야됩니다.
그리고 do-while() 의 경우 최초 1번은 무조건 실행하는 반복문인데요.
그래서 특별한 경우를 제외하고는 do-while() 은 거의 쓰지 않는 것 같습니다.
while (x > 0) {
x--
}
do {
val y = retrieveData()
} while (y != null) // y is visible here!
반복문의 경우 기존 자바와 많이 다르진 않은 것 같습니다.
for() 의 문법이 바뀐 점을 제외하고는 눈에 띄는 차이점은 없는 것 같아요.
그럼 저는 다음 포스팅에서 뵙겠습니다.
감사합니다!