Kotlin
Kotlin의 루프
수색…
비고
Kotlin에서 루프는 최적화 된 루프로 컴파일됩니다. 예를 들어, 숫자 범위를 반복 할 경우 바이트 생성은 객체 생성의 오버 헤드를 피하기 위해 일반 int 값을 기반으로 해당 루프로 컴파일됩니다.
x 번 작업 반복
repeat(10) { i ->
println("This line will be printed 10 times")
println("We are on the ${i + 1}. loop iteration")
}
반복 가능한 반복문
for-loop 표준을 사용하여 반복 가능한 모든 반복 가능 :
val list = listOf("Hello", "World", "!")
for(str in list) {
print(str)
}
Kotlin의 많은 것들은 숫자 범위와 같이 반복 가능합니다 :
for(i in 0..9) {
print(i)
}
iterating하는 동안 인덱스가 필요한 경우 :
for((index, element) in iterable.withIndex()) {
print("$element at index $index")
}
또한 forEach 함수를 사용하여 명백한 언어 구문없이 표준 라이브러리에 포함 된 반복적 인 함수 접근법이 있습니다.
iterable.forEach {
print(it.toString())
}
it
예는 암시 적으로 현재 요소를 보유에 참조 람다 함수
While 루프
while과 do-while 루프는 다른 언어에서와 마찬가지로 작동합니다.
while(condition) {
doSomething()
}
do {
doSomething()
} while (condition)
do-while 루프에서 조건 블록은 루프 본문에 선언 된 값과 변수에 액세스 할 수 있습니다.
끊고 계속하기
휴식 및 계속 키워드는 다른 언어에서와 마찬가지로 작동합니다.
while(true) {
if(condition1) {
continue // Will immediately start the next iteration, without executing the rest of the loop body
}
if(condition2) {
break // Will exit the loop completely
}
}
중첩 루프가있는 경우 루프 문에 레이블을 지정하고 break 및 continue 문을 한정하여 계속하거나 중단 할 루프를 지정할 수 있습니다.
outer@ for(i in 0..10) {
inner@ for(j in 0..10) {
break // Will break the inner loop
break@inner // Will break the inner loop
break@outer // Will break the outer loop
}
}
이 접근법은 forEach
구조체에서 작동하지 않습니다.
kotlin의지도 반복하기
//iterates over a map, getting the key and value at once
var map = hashMapOf(1 to "foo", 2 to "bar", 3 to "baz")
for ((key, value) in map) {
println("Map[$key] = $value")
}
재귀
재귀를 통한 루핑은 대부분의 프로그래밍 언어 에서처럼 Kotlin에서도 가능합니다.
fun factorial(n: Long): Long = if (n == 0) 1 else n * factorial(n - 1)
println(factorial(10)) // 3628800
위의 예제에서 factorial
함수는 주어진 조건이 충족 될 때까지 반복적으로 호출됩니다.
반복을위한 기능적 구성
Kotlin 표준 라이브러리 는 컬렉션에 대해 반복적으로 작업 할 수있는 많은 유용한 기능을 제공합니다.
예를 들어 map
함수를 사용하여 항목 목록을 변환 할 수 있습니다.
val numbers = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 0)
val numberStrings = numbers.map { "Number $it" }
이 스타일의 많은 장점 중 하나는 비슷한 방식으로 작업을 연결할 수 있다는 것입니다. 말하자면 위의 목록을 짝수로 필터링해야하는 경우 사소한 수정 만 필요합니다. filter
기능을 사용할 수 있습니다.
val numbers = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 0)
val numberStrings = numbers.filter { it % 2 == 0 }.map { "Number $it" }