2.4.1 while 루프
코틀린에는 while과 do-while 루프가 있다. 두 루프의 문법은 자바와 다르지 않다.
while (조건) {
// ...
}
do {
// ...
} while (조건)
2.4.2 수에 대한 이터레이션: 범위와 수열
코틀린에서는 가장 흔한 용례인 범위 문법을 지원한다.
보통은 정수 등의 숫자 타입 두 값이며, .. 연사자로 시작 값과 끝 값을 연결해서 범위를 만든다. (양 끝 값을 포함)
val oneToTen = 1..10 // 양 끝 값을 포함하므로 1부터 10까지의 숫자들이다.
역방향으로 증가 값을 갖고 범위 이터레이션을 하는 방법은 아래와 같다.
for (i in 100 downTo 1 step 2) {
print(i)
}
// 결과: 100, 98, 96, ...
2.4.3 맵에 대한 이터레이션
val binaryReps = TreeMap<Char, String>()
for (c in 'A'..'F') {
val binary = Integer.toBinaryString(c.toInt())
binaryReps[c] = binary
}
for ((letter, binary) in binaryReps) {
println("$letter = $binary")
}
맵이 아닌 컬렉션에도 위와 같은 구조 분해 구문을 활용할 수 있다.
val list = arrayListOf("10", "11", "1001")
for ((index, element) in list.withIndex()) {
println("$index: $element")
}
2.4.4 in으로 컬렉션이나 범위의 원소 검사
in 연산자를 사용해 어떤 값이 범위에 속하는지 검사할 수 있다. 반대로 !in을 사용하면 어떤 값이 범위에 속하지 않는지 검사할 수 있다.
fun isLetter(c: Char) = c in 'a'..'z' || c in 'A'..'Z'
fun isNotDigit(c: Char) = c !in '0'..'9'
>>> println(isLetter('q'))
true
>>> pritln(isNotDigit('x'))
true
// c in 'a'..'z' <-- 내부적으로 'a' <= c && c <= 'z'로 변환된다.
in과 !in 연산자를 when 식에서 사용해도 된다.
fun recognize(c: Char) = when (c) {
in '0'..'9' -> "It's digit!"
in 'a'..'z', in 'A'..'Z' -> "It's a letter!"
else -> "I dont' know..."
}
>>> println(recognize('8'))
It's a digit!
'Kotlin' 카테고리의 다른 글
[Kotlin in Action] 3.1 코틀린에서 컬렉션 만들기 (0) | 2025.03.14 |
---|---|
[Kotlin in Action] 2.5 코틀린 예외 처리 (0) | 2025.03.14 |
[Kotlin in Action] 2.3 선택 표현과 처리: enum과 when (0) | 2025.03.14 |
[Kotlin in Action] 2.2 클래스와 프로퍼티 (0) | 2025.03.14 |
[Kotlin in Action] 2.1 기본 요소: 함수와 변수 (0) | 2025.03.14 |
댓글