728x90
사실 코틀린으로 개발하면서 while, for 루프 잘 안쓴다...
built-in 함수(filter, map, let, apply, also)와 그 외 sumOf, maxOf, minOf 등등
간단하게 루프를 작성할 수 있는 함수들이 존재하기 때문에 그런것 같다.
for문으로 작성하고 나면 코틀린스럽게 작성하지 못했다는 생각이 들 정도....
[ while 루프 ]
∘ while 루프는 자바와 동일하다.
while(조건) {
}
do {
} while(조건)
[ 수에 대한 iteration ]
∘ 코틀린은 가장 흔한 용례인 초깃값, 증가값, 최종값을 사용한 루프를 대신하기 위해 범위(range) 사용
∘ 보통 두 값의 시작과 끝을 연결하여 범위를 만든다.
// Kotlin
for(i in 1..100) {}
// java
for(int i=1; i<=100; i++) {}
// Kotlin
for(i in 100 downTo 2) {}
// java
for(int i=100; i>=2; i--) {}
// Kotlin
for(i in 100 downTo 1 step 2) {}
// java
for(int i=100; i>=1; i-=2) {}
// Kotlin
for(i in 0 until 10) {}
// java
for(int i=0; i<10; i++) {}
[ 맵에 대한 iteration ]
1. map
val asciiCode = TreeMap<Char, Int>()
for(c in 'A'..'F') {
val number = c.toInt() // A~F에 해당하는 아스키코드
asciiCode[c] = number
}
// map에 대한 iteration
for((letter, code) in asciiCode) {
println("${letter} => ${code}")
}
∘ TreeMap 컬렉션의 원소들을 letter, code에 저장
∘ asciiCode[c] = number 는 자바의 asciiCode.put(c, number) 와 같다.
2. list
val list = arrayListOf("1", "2", "3")
for((idx, num) in list.withIndex()) {
println(${idx} : ${num})
}
∘ .withIndex() : 인덱스와 함께 컬렉션 iteration
[ in으로 컬렉션 or 범위 원소 검사 ]
println('h' in 'a'..'z') // true
println('h' in '0'..'9') // false
println('h' !in '0'..'9') // true
// 활용
fun recognize(c: Char) =
when(c) {
in '0'..'9' -> "DIGIT"
in 'a'..'z', in 'A'..'Z' -> "LETTER"
else -> "??????"
}
// setOf에서 검사
println("kotlin" in setOf("Java", "Scala")) // false
728x90
'Kotlin > Kotlin In Action' 카테고리의 다른 글
[Kotlin] 3-1. 함수의 정의와 호출 (0) | 2022.06.03 |
---|---|
[Kotlin] 2-5. 코틀린의 예외 처리 (0) | 2022.05.15 |
[Kotlin] 2-3. 선택 표현과 처리 : enum과 when (0) | 2022.05.15 |
[Kotlin] 2-2. 클래스와 프로퍼티 (0) | 2022.04.03 |
[Kotlin] 2-1. 함수와 변수 (0) | 2022.03.31 |