티스토리 뷰

반응형

  코틀린의 while은 자바와 동일하다. for는 자바의 for-each의 형태와 비슷하고 for <아이템> in <아이템s>와 같은 형식을 가진다.

 

while

while (조건) {
  /*...*/
}

do {
  /*...*/
} while (조건)

  코틀린에는 while과 do-while 루프가 있고 둘 다 자바와 동일한 방법으로 사용하면 된다.

 

 

for

  java에서 for문은 초깃값, 증가 값, 최종값이 있지만 코틀린은 없다. 대신 코틀린은 범위를 사용한다. 범위는 두 값으로 이뤄진 구간이고 시작값..끝값의 형태로 범위를 생성한다. 이 범위는 시작값과 끝값 모두 포함한다.

 

fun main() {
  for (i in 1..100) {
    print("$i ")
  }
}

  위의 코드는 1부터 100까지 출력하는 코드이다. 양 끝값이 모두 출력된 것을 확인할 수 있다.

 

ide에서 ..이 양 끝값을 포함하는 것을 볼 수 있다

  위의 사진을 보면 시작값 이상 끝값 이하이다. 따라서 감소하는 값을 출력하고 싶을 때 100..1이라고 범위를 지정하면 의도한 대로 동작하지 않는다. 감소하는 범위를 사용하고 싶다면 downTo를 사용하면 된다.

 

100부터 1까지 2씩 감소

  step은 증감할 값의 절댓값이다. 위의 코드를 실행하면 100부터 2까지 출력된다.

 

unitl은 끝값을 포함하지 않음

  until은 끝값을 포함시키지 않을 때 사용한다. 

 

 

맵 이터레이션

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")
}

  두 번째 for문은 TreeMap을 순회한다. TreeMap 자체가 키에 대해서 정렬이 되어 있는 자료구조이기 때문에 문자 A부터 F까지를 이진수로 변환한 결과값이 출력된다.

  맵에 값을 추가할 때 대괄호와 대입연산자를 사용했지만 자바에서와 같이 put을 사용하는 것도 가능하다.

 

val list = arrayListOf("10", "11", "100")
for ((index, element) in list.withIndex()) {
  println("$index: $element")
}

  다른 켈렉션에도 순회를 할 수 있다. withIndex를 통해서 인덱스와 함께 값을 순회할 수 있다.

 

 

in의 활용

  in을 사용해서 값이 범위에 속해있는지 알 수 있고, !in을 통해서 값이 범위에 속하지 않는지 검사할 수 있다.

 

fun isLetter(c: Char) = c in 'a'..'z' || c in 'A'..'Z'

 isLetter은 문자가 알파벳 문자인지 검사하는 함수이다.

 

fun isLetter(c: Char) = when {
  c in 'a'..'z' -> "Small Letter"
  c in 'A'..'Z' -> "Capital Letter"
  else -> "I don't know!"
}

  위와 같이 in의 범위 체크는 when이랑도 같이 활용 가능하다. 

 

 

println("Banana" in "Apple".."Carrot")

  문자열도 in 연산이 가능한데 값이 범위 안에 속하는지 검사할 수 있다.

 

println("Banana" in setOf("Apple", "Carrot"))

  집합에도 in 연산을 사용할 수 있다.

 

 

참고 자료

  • Kotlin IN ACTION
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함