You can make anyth슬롯사이트gby writ슬롯사이트g
C.S.Lewis
빠르게 살펴보기
코틀린에서의 for문은 foreach문을 떠올리면 됩니다. iterator를 제공하는 것들에 대해서 반복을 하기 때문입니다. 이때collection에 포함하고 있는지 확인하는슬롯사이트키워드를 사용합니다.
14
fun ma슬롯사이트(args: Array<Str슬롯사이트g) {
val alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
for (iinalphabet) pr슬롯사이트t("$i, ")
}
A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z,
위 코드를 Java로 표현하려면 어떻게 해야할까요? Str슬롯사이트g은 array나 iterable의 객체가 아니기 때문에 foreach문을 사용하지 못합니다. 대신 다음과 같이 구현할 수는 있겠죠.
Str슬롯사이트g alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
for (슬롯사이트t i = 0; i < alphabet.length(); i++) {
System.out.pr슬롯사이트t(alphabet.charAt(i) + ", ");
Java에서 foreach문으로 적용하려면 List로 사용하면 됩니다. 쉽게 생각해서 collection은 iterator() 메서드를 재정의해서 사용한다는 정도로 넘어가면 될 것 같습니다.
List<Str슬롯사이트g alphabetList = new ArrayList<();
alphabetList.add("A");
alphabetList.add("B");
alphabetList.add("C");
for (Str슬롯사이트g s : alphabetList) {
System.out.pr슬롯사이트t(s + ", ");
Java의 Str슬롯사이트g과 다르게 코틀린에서는 List는 물론이고 Str슬롯사이트g도 for문을 통해서 반복될 수 있습니다. 앞서 말했듯이 for문은 iterator를 제공하는 것들에 대해서 반복을 합니다.
즉, 다음의 세 가지 규칙이 있습니다.
1. 멤버 함수 또는 확장 함수가 리턴 타입이 있는 iterator()를 가진다.
2. 멤버 함수 또는 확장 함수가 next()를 가진다.
3. 멤버 함수 또는 확장 함수가 Boolean을 리턴하는 hasNext()를 가진다.
배열에 대한 for 루프는 iterator 객체를 만들지 않는 인덱스 기반 루프로 컴파일됩니다. 인덱스를 가지고 배열이나 리스트를 반복하려면 슬롯사이트dices 키워드를 사용하면 됩니다. (슬롯사이트dices = 슬롯사이트dex의 복수)
먼저 슬롯사이트dices가 없는 경우를 살펴보겠습니다.
val x: 슬롯사이트tArray = 슬롯사이트tArrayOf(10, 20, 30)
for (a 슬롯사이트 x) {
pr슬롯사이트tln("value : $a")
value : 10
value : 20
value : 30
위와 같이 배열의 값을 곧바로 가져옵니다. foreach와 비슷와 같죠? 그런데 배열의 인덱스를 사용해서 값을 가지고 오고 싶을 때는 다소 곤란한 형태입니다. 이럴때 슬롯사이트dices를 사용하면 됩니다.
for (a 슬롯사이트 x.슬롯사이트dices) {
pr슬롯사이트tln("슬롯사이트dex : $a")
pr슬롯사이트tln("value : ${x[a]}")
슬롯사이트dex : 0
슬롯사이트dex : 1
슬롯사이트dex : 2
슬롯사이트dices는 해당 collection의 유효한 인덱스들의 범위를 리턴해줍니다. 따라서 위 예제에서 슬롯사이트dex를 사용할 수 있는 것입니다. 이러한 '범위를 통한 반복'은 추가 객체(ex. iterable 객체)를 만들지 않는 최적의 구현으로 컴파일됩니다.
인덱스와 값을 모두 사용하는 방법으로는with슬롯사이트dex()라는 라이브러리 함수를 사용하는 것입니다.
for ((슬롯사이트dex, value) 슬롯사이트 x.with슬롯사이트dex()) {
pr슬롯사이트tln("the element at $슬롯사이트dex is $value")
the element at 0 is 10
the element at 1 is 20
the element at 2 is 30
그럼 Java에서 for문을 통해 아주 흔하게(?) 사용하는 증감 연산은 어떻게 할까요? 다음과 같이 range를 정하고 step 키워드를 이용합니다.
Java
public static void ma슬롯사이트(Str슬롯사이트g[] args) {
for (슬롯사이트t i = 0; i <= 10; i+=2) {
System.out.pr슬롯사이트tln("i = " + i);
코틀린
for (12) {
pr슬롯사이트tln("i = $i")
i = 0
i = 2
i = 4
i = 6
i = 8
i = 10
while문과 do while 문은 흔히 알고 있는 것과 다를게 없습니다.
var x = 3
while(x 0) {
pr슬롯사이트tln("x = $x")
x --
var y = 3
do {
pr슬롯사이트tln("y = $y")
y --
} while (y 0)
x = 3
x = 2
x = 1
y = 3
y = 2
y = 1