//kotlinval names: List<String> =...//변수 name의 타입은 리스트 names를 통해 String으로 추론하므로//타입을 굳이 명시하지 않아도 된다.for(name in names) { Log.d("Name", "name="+ name)}
for 문 에서의 인덱스 접근
for문 내에서 현재 항목의 인덱스가 필요할 경우, Collection.indicies 프로퍼티를 사용하면 컬렉션의 인덱스를 순환하며 인덱스 인자로 배열 내 항목에 접근할 수 있다.
//kotlinval names: List<String> =...for(i in names.indicies) {//인덱스 인자로 배열 내 항목 접근 Log.e("Name", "name=${names[i]}")}
범위
코틀린에서는 순환 범위를 표현하기 위해 별도의 자료구조를 사용한다.
범위(range)는 코틀린에만 있는 독특한 자료구조로, 특정 범위를 순환하거나 해당 범위내에 특정 항목이 포함되어 있는지 확인할 때 사용한다.
range는 .. 연산자를 사용하여 정의한다.
//kotlin//0부터 10까지, 시작과 끝을 포함하는 범위를 정의한다.val myRange : IntRange=0..10//IntRange클래스를 사용하여 배열 인덱스의 순환 범위를 표현한다.//위에서 정의한 범위를 순환하는 for문for(i in myRange) {//Do something}//for문 안에서 바로 범위를 지정할수도 있다.for(i in0..10) {//Do something}
인덱스 순환을 위한 범위를 생성하는 경우 .. 연산자 대신에 until 함수를 사용하면 가장 마지막 값을 포함하지 않는 범위를 생성할 수 있다.
val items: List<String> =...//0번 인덱스부터 3번 인덱스까지 총 4개 항목을 포함하는 범위val myRange: IntRange=0..3//myRange와 동일한 항목을 포함하는 범위 (미)val myRange2: IntRange=0 until 4
범위내에 특정 항목이 있는지 알아보려면 in 연산자를 사용한다.
val myRange: IntRange=0..10//5가 myRange에 포함되어 있는지 검사: true반환val foo: Boolean=5in myRange//5가 myRange안에 포함되지 않는지 검사: false반환val bar: Boolean=5!in myRange
downTo() : 역순으로 수행한다.
for (i in4 downTo 1) print(i) // prints "4321"
step() : interval 설정이 가능하다.
for (i in1..4 step 2) print(i) // prints "13"for (i in4 downTo 1 step 2) print(i) // prints "42"