티스토리 뷰

C의 for문에는 i가 있었다. Swift에서는 배열을 도는데, index를 알고 싶다면 어떻게 해야할까??

 

firstIndex같은거 들고 삽질하고 있었는데ㅠㅠ

 

정답은 enumerate!!!

 

배열.enumerate()과 같은 형태로 쓰면 된다. 

 

sequence가 리턴 되는데...!

 

요런 식으로 쓸 수 있다. 

for (index, element) in list.enumerated() {
  print("Item \(index): \(element)")
}

 

 

forEach를 섞어 쓰고 싶고, $0을 이용해서 축약도 하고 싶다면?

 

이렇게 쓰면 된다. 

 

더 짧게 쓰려면 다음과 같이도 가능하다. 

list.enumerated().forEach { print("index: \($0.0), value: \($0.1)") }

$0.0$0.offset이고, $0.1$0.element ...!

 

===============

 

map + enumerate + filter을 섞어쓰고 싶으면 이렇게도 가능하다. 

    let evens = arrayOfValues.enumerate().filter {
      (index: Int, element: Int) -> Bool in
      index % 2 == 0
    }.map { (_: Int, element: Int) -> Double in
      Double(element)
    }
    let odds = arrayOfValues.enumerate().filter {
      (index: Int, element: Int) -> Bool in
      index % 2 != 0
    }.map { (_: Int, element: Int) -> Double in
      Double(element)
    }

파라미터를 계속 표기해줘야 해서 약간 귀찮은 감이 있다.

 

 

 

 

출처: https://stackoverflow.com/questions/24028421/swift-for-loop-for-index-element-in-array

공지사항
최근에 올라온 글
최근에 달린 댓글
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
글 보관함