2017-10-30 10 views
0

모듈러스가 나머지 부분을 반환한다는 것을 알고 있지만 배열 인덱스를 재설정해야 할 때 어떻게 작동하는지 이해할 수 없습니다.모듈러스 연산자로 인덱스를 다시 설정하는 작업은 어떻게됩니까?

let numbers = [1, 2, 3] 
let index = 0 

for 1...6 { 
    let item = numbers[index % numbers.count] 
    print(item) 
    index += 1 
} 

나는 인덱스의 전의 작업이 numbers.count 같다는 것을 이해하고,이 인덱스를 반환합니다

은의 우리가이 코드가 있다고 가정하자. 인덱스가 3에 도달하면 배열에있는 항목의 수는 배열의 첫 번째 항목을 표시하는 0을 반환한다는 것을 이해합니다. 그러나, 나는 그 배열을 순서대로 계속 표시하는 방법을 이해하지 못한다.

인덱스가 4 인 경우 수행 된 작업은 4로 나눠서 1의 나머지를 반환합니다. 그러면 표시된 숫자는 1, 2, 3, 1, 1이 될 것입니다. 맞습니까? 인덱스는 0으로 다시 할당되지 않으므로 증가 할 것입니다.

인덱스를 재설정하는 방법은 배열 끝에 도달 한 후에 어떻게 작동합니까?

왜 계수 방법은 아래의 인덱스 재설정 방법보다 나은가요?

if index >= numbers.count { 
    index = 0 
} 

답변

1

설명이 약간 벗어났습니다. index은 0으로 시작하는 반복되고,하지 (1) (index의 값으로 라인 for 1...6을 혼동하지 마십시오.

을 수학를 수행합니다. 당신은 5 numbers.count 0에서 index를 반복 각 3.

입니다 인덱스, 결과는 내가 지금 이해 생각합니다.

index: 0 1 2 3 4 5 
result: 0 1 2 0 1 2 
item: 1 2 3 1 2 3 
+0

index % numbers.count이지만, 왜 계수 방법을 사용하는 것보다 더 나은있는 문은 0? – ranfor123

+0

그것은에서. 인덱스가 사용되는 방법에 따라 달라집니다 다시 인덱스를 할당하는 경우 어느쪽으로 든 질문에 코드 잘 작동합니다. 그러나 둘 이상의 용도로 인덱스가 필요한 경우가있을 수 있습니다. – rmaddy

+0

그래서 인덱스를 필요로하지 않으면 if 문 메서드를 기본값으로 사용하는 것이 좋습니다. 내가 말하는 클래스는 if 문법을 사용했고 결코 모듈법을 다루지 않았습니다. – ranfor123