2017-04-25 13 views
0

.enumerated()와 stride를 사용하여 1보다 큰 인덱스로 문자열의 배열을 통해 for-in 루프를 사용하는 방법이 있습니까? 인덱스와 값을 유지 하시겠습니까? 예를 들어Swift : 1보다 큰 인덱스로 열거 형 배열을 반복하는 For 루프

, I 배열이 있다면

VAR의 testArray2 [문자열] = "A", "B", "C", "D", "E"]

및 I 를 통해 출력에 2 testArray2.enumerated()를 사용하여도 보폭을 사용하여 루프를 원 :

0, a 
2, c 
4, e 

따라서이 같은 이상적으로 뭔가; 그러나이 코드는 작동하지 않습니다.

for (index, str) in stride(from: 0, to: testArray2.count, by: 2){ 
    print("position \(index) : \(str)") 
} 

답변

4

원하는 출력을 얻는 방법은 두 가지가 있습니다. 단지 stride

var testArray2: [String] = ["a", "b", "c", "d", "e"] 

for index in stride(from: 0, to: testArray2.count, by: 2) { 
    print("position \(index) : \(testArray2[index])") 
} 
  • for inwhereenumerated()를 사용하여

    1. .

      for (index, element) in testArray2.enumerated() where index % 2 == 0 { 
          // do stuff 
      } 
      

      또 다른 가능한 방법은 인덱스와 값의 튜플의 컬렉션에 인덱스로 매핑하는 것입니다 :

      for (index,item) in testArray2.enumerated() where index % 2 == 0 { 
          print("position \(index) : \(item)") 
      } 
      
  • +0

    고맙습니다. 저는 스위프트를 배우는 중입니다. 그리고 이것은 나에게 매우 새로운 구문입니다. – Biggytiny

    +0

    @Biggytiny Welcome mate :) 구문을 이해하면 쉽게 볼 수 있습니다. –

    3

    보폭으로 반복하려면 where 절을 사용할 수

    for (index, element) in stride(from: 0, to: testArray2.count, by: 2).map({($0, testArray2[$0])}) { 
        // do stuff 
    }