일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 라이징캠프
- MVC
- 알고리즘
- prefix()
- 싱글톤
- uikit
- 코딩테스트
- components()
- tableView
- String()
- suffix()
- xib
- replacesubrange()
- alamofire
- Segue
- 클론코딩
- joined()
- 코드업 파이썬 기초 100제
- API
- uisearchbar
- github
- GIT
- IOS
- swift
- Autolayout
- 대문자소문자
- 프로그래머스
- zip()
- reduce()
- Info.plist
- Today
- Total
Daeng iOS
[Swift] prefix(_:)에 대하여.. 본문
문자열을 다룰 때 자주 사용하는 prefix..
"pre"가 붙는다는 것 부터가 선행자에 대한 내용인 느낌이고
prefix는 각 파라미터에 따라 다른 동작을하는 메소드 4개가 있다!
우선 간단히 살펴보고 실제로 어떻게 사용하면되는지 확인해보자
1) prefix(_:)
컬렉션의 초기 요소를 포함하는 지정된 최대 길이까지 서브시퀀스를 반환한다
maxLength 는 반환할 요소의 최대 수로, 0 이상이어야한다.
maxLength에 넣어주는 숫자만큼을 처음부터 떼어내는 것
떼어내고싶은 길이만큼을 파라미터로 보내주면 된다
2) prefix(through:)
컬렉션의 시작부터 지정된 위치까지의 서브 시퀀스를 반환한다
position은 결과 서브시퀀스에서 포함할 마지막 인덱스로,
endIndex 프로퍼티와는 같지 않은 컬렉션의 유효한 인덱스 여야한다
난 이부분에서 "endIndex 프로퍼티와 같지 않은" 이라는 내용이 이해가 안됐다
마지막 인덱스는 쓰지말라는건가? 하고 endIndex에 대해 찾아봤는데..
공식문서의 설명을 보면 endIndex는 배열의 "끝을 지난" 인덱스로, 유효한 인덱스보다 1 크다!!!
예를 들어 배열의 개수가 5개라면 endIndex는 4가 아니라 5!!
배열의 수가 5개면 끝 인덱스는 4지만
endIndex 프로퍼티는 "끝을 지난" 인덱스이므로 5가 되는 것
그래서 endIndex를 위와같이 쓸때는 ..< 이걸 써야한다
...를 쓰면 당연 아웃오브인덱스 될 것
하여튼 다시 Prefix로 돌아가서
이 함수는 주어진 위치까지 포함한 서브 시퀀스를 반환한다 .
파라미터로 넣어주는 position은 개수가아닌 index 이기 때문에
유효한 인덱스 값을 넣어줘야하고,
2를 넣어준다면 ?
2개 반환 (X)
인덱스 2까지 반환 (O)
3) prefix(upTo:)
컬렉션의 시작부터 지정된 위치까지의 서브 시퀀스지만, 지정된 위치는 포함하지 않는다
end 파라미터는 결과 서브시퀀스의 "끝을 지나는" 인덱스로, 컬렉션의 유효한 인덱스여야한다.
이 함수도 개수가 아닌 인덱스를 넣어줘야 하는건데
바로 위 함수와 다른 점은 넣어준 파라미터를 포함하냐 안하냐에 차이
2를 넣어줬다면 인덱스 0 인덱스 1 자리의 요소까지 반환하겠지?!
4) prefix(while:)
predicate가 false를 반환하고 나머지 요소를 건너뛸 때까지
초기 요소를 포함하는 서브 시퀀스를 반환한다
predicate는 시퀀스의 요소를 클로저로 가지고,
그 요소가 포함되어야하면 true를, 제외되어야하면 false를 반환한다.
한번 false를 반환하면 다시 호출되지 않는다
음.. 다시 말해서
파라미터 while에는 조건이 되는 predicate를 클로저로 넣어준다
그리고 주어진 요소들이 그 predicate 조건에 해당하면 true를, 아니면 false를 반환하는데
false를 반환하게되면 함수는 다시 호출되지않는다
그리고 이 함수의 return 값은 서브시퀀스 이기 때문에
그렇게해서 true인 조건까지 만족하는 요소들이 그대로 반환된다!
아래사진은 위에서 확인한 4가지 prefix 함수를 print 해본 것~!
여기서 마지막 print문을 보면 2 이상인 배열이 3만 해당되기 때문에
[3]을 반환하는 것
이상,, 끝~
'IOS > Swift' 카테고리의 다른 글
[Swift] zip(_:_:)에 대하여.. (0) | 2024.05.22 |
---|---|
[Swift] suffix(_:)에 대하여.. (0) | 2024.05.17 |
[Swift] replaceSubrange(_:with:)에 대하여.. (0) | 2024.05.16 |
[Swift] joined(separator:)에 대해.. (0) | 2024.05.09 |
[Swift] 대소문자 변환 (0) | 2024.05.08 |