티스토리 뷰
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
'macOS, iOS' 카테고리의 다른 글
[swift] enum과 switch문 (0) | 2019.10.21 |
---|---|
struct, class instance 두개를 ==(등호)로 비교하고 싶다면? (0) | 2019.10.17 |
[iOS] collection view 스크롤 가능하게 하기 (0) | 2019.10.17 |
[iOS] Assets.xcassets에 있는 color에 접근 하는 법 (0) | 2019.10.17 |
[swift] for와 foreach 그리고 filter (0) | 2019.10.17 |