leeyang의 개발 성장기
[Swift] for문 탐색을 거꾸로하기 본문
안녕하세요. 리양입니다 :)
요새 알고리즘을 공부하니 for문과 while문에 집중하게 되고 있네요.
C언어를 공부해본 사람이라면 for(i = 0; i < n; i++) 식에 익숙하실텐데요 :)
swift5에서 작성해봅시다.
ㅠ ㅠ C 스타일이라고 swift3에서 삭제 되었습니다!
그래서 swift에서는 for문을 사용하기 위해 for i in 0...n 식을 사용하고 있죠.
그럼 감소하는 for문은 어떻게 사용할까요?
1. reversed() 사용
reversed()
Returns a view presenting the elements of the collection in reverse order.
Declaration
func reversed() -> ReversedCollection<Array<Element>>
애플 document에 나와있는 내용인데요, reverse의 뜻처럼 담겨져 있는 데이터를 역순으로 보여준다는 것입니다.
다만 이 메소드는 collection 타입인 array의 인스턴스 메소드임으로, 순수 범위인 int타입에서는 적용이 어렵습니다 :)
2. stride() 사용
stride(from:to:by:)
Returns a sequence from a starting value to, but not including, an end value,
stepping by the specified amount.
Declaration
func stride<T>(from start: T, to end: T, by stride: T.Stride) -> StrideTo<T> where T : Strideable
Generic function이기에 어떤 타입이든 사용이 가능합니다. 다만 Strideable 타입에 속한 어떤 타입이죠.
Strideable은 연속적인 수를 나타낼 수 있는 프로토콜입니다. 그래서 Int, date 타입 등을 나타냅니다.
즉! stride를 이용해서 range를 표시 하면됩니다.
주의) to vs through의 차이
to는 해당 수를 포함하지 않고, through는 포함합니다.
즉 >와 ...의 차이라 생각하시면 됩니다.
잘못된 정보나 부족한 부분은 피드백 받고 있습니다 :)
참고한 글
'Swift' 카테고리의 다른 글
[Swift] ExpandableCell 만들기 (0) | 2019.09.15 |
---|---|
[Swift] TableViewCell identifier에 관하여 (0) | 2019.09.09 |
[Swift] 열거형 - enum 기본편 (0) | 2019.09.03 |