써니쿠키의 IOS 개발일기
[swift] enumerated(), forEach() 본문
- 어쩌다가 알게되었나?
본래 set타입에는 순서가 없지만 set 타입에 담긴 멤버들에게 임시적으로 순서를 부여했어야 했다..!
1. enumerated()
공식문서에서의 정의
enumerated()메서드를 사용하면 (n,x)쌍의 시퀀스로 리턴해준다
n = 0부터 시작하는 연속정수
x = 시퀀스의 요소를 나타내는 것
//예시(String)
for (n, x) in "Sun".enumerated() {
print("\(n): '\(x)'")
}
// Prints "0: 'S'" // 0부터 시작된다
// Prints "1: 'u'"
// Prints "2: 'n'"
컬렉션 타입에서의 사용
- array 타입
리턴되는 n값이 index와 같음을 이용 할 수 있다. - 그 외 다른 컬렉션 타입(dictionaty와 set 등)
인덱스로 쓸 수 없는 타입이거나 n이 범위를 벗어날 수 도있다.
컬렉션 요소를 반복하려면 zip(*:*:) 함수
를 사용할 수 있다.
//예제(Set)
let names: Set = ["Sunny", "Ash", "Bame2", "Jpush", "LJ"]
for (i, x) in names.enumerated() {
print(i ,x)
}
// ✔️순서는 빌드시마다 변함! (set이므로)
// 0 Jpush
// 1 LJ
// 2 Bame2
// 3 Sunny
// 4 Ash
Set타입 사용 시 value에 잠시 순서를 부여하고싶을 때 사용하면 좋을 듯하다!
2. foreach()
공식문서에서의 정의
for-in 루프와 동일한 순서로 시퀀스의 각 요소에 대해 불러옵니다.
- ✅
forEach
가for-in 루프
와 다른점- Break 또는 Continue 문을 사용불가능
- return사용 외부 scope가 아닌 현재 현재 호출에서만 종료되고 이후 호출은 건너뛰지않음.
//정의
func forEach(_ body: (Self.Element) throws -> Void) rethrows
//예시
let names2: Array<String> = ["Sunny", "Ash", "Bame2", "Jpush", "LJ"]
//for - in 루프 사용
for name in names2 {
print(name)
}
// Sunny
// Ash
// Bame2
// Jpush
// LJ
//foreach 메서드 사용
names2.forEach { name in
print(name)
}
//위와 동일하다
// Sunny
// Ash
// Bame2
// Jpush
// LJ
반복문을 좀 더 간결하게 작성하고 싶을 때 사용하면 좋을 것 같다.
다만 for-in구문과의 차이를 알고써야겠다
반응형
'swift, Ios' 카테고리의 다른 글
[swift] 제네릭? generic (0) | 2022.08.26 |
---|---|
[swift] static 은 언제쓰지??? 타입메서드 / 타입프로퍼티 (0) | 2022.08.25 |
[swift] 재귀함수 (0) | 2022.08.24 |
[swift] Array 멤버 대괄호없이 한 줄로 출력하는 방법 (joind, map) (0) | 2022.08.19 |
야곰 커리어 스타터 캠프 7기 시작 (0) | 2022.08.14 |
Comments