반응형
2.4 대상을 이터레이션: while과 for 루프
while 루프는 자바와 동일하므로 패스, for 는 자바의 for-each 루프에 해당하는 형태만 존재
2.4.2 수에 대한 이터레이션: 범위와 수열
코틀린에서는 자바의 for 루프에 해당하는 요소가 없다. 이런 루프의 가장 흔한 용례인 초깃값, 증가 값, 최종 값을 사용한 루프를 대신하기 위해 코틀린에서는 범위(range)를 사용한다.
// 범위는 기본적으로 두 값으로 이뤄진 구간이며 .. 연산자로 시작 값과 끝 값을 연결해서 범위를 만든다.
val oneToTen = 1..10
fun fizzBuzz(i: Int) = when {
i % 15 == 0 -> "FizzBuzz"
i % 3 == 0 -> "Fizz "
i % 5 == 0 -> "Buzz "
else -> "$i "
}
>>> for(i in 1...100){
... print(fizzBuzz(i))
... }
// 100 downTo 1 (역방향 수열을 만든다.)
// step2 (증가 값의 절대값이 2로 바뀐다. -2 ..)
>>> for(i in 100 downTo 1 step 2){
... print(fizzBuzz(i))
... }
2.4.3 맵에 대한 이터레이션
val binaryReps = TreeMap<Char, String>()
for(c in 'A'..'F'){ // A부터 F까지 문자의 범위를 사용해 이터레이션
val binary = Integer.toBinaryString(c.toInt()) // ASCII 코드를 2진 표현으로 변경
binaryReps[c] = binary // c를 키로 c의 2진 표현을 맵에 넣는다.
}
for((letter, binary) in binaryReps){
println("$letter = $ibary");
}
get과 put을 사용하는 대신 map[key]나 map[key] = value를 사용해 값을 가져오고 설정할 수 있다.
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'
//'a'<=c && c<='z'로 변환한다.
c in 'a'..'z'
반응형
'프로그래밍 노트 > Kotlin' 카테고리의 다른 글
[Kotlin] 코틀린(Kotlin) 함수만들기 (0) | 2020.11.14 |
---|---|
[Kotlin] 코틀린(Kotlin)에서 컬렉션 만들기 (0) | 2020.11.14 |
[Kotlin] 코틀린(Kotlin) enum과 when (0) | 2020.11.09 |
[Kotlin] 코틀린(Kotlin) 클래스와 프로퍼티 (0) | 2020.11.09 |
[Kotlin] 코틀린(Kotlin) 기본요소 (함수와 변수) (0) | 2020.11.07 |