-
Swift - prefix, suffixdeveloping study 2024. 1. 12. 22:51
코테 문제에 문자열에 관한 게 많은데 그만큼 메소드도 다양하고 알아야 할 것들이 새삼 많다.
그 중 prefix, suffix 생긴 것도 비슷한데 헷갈리고 잘 이해가 되지 않아서 정리.
1. 의미
1) 순수 영단어로 접근해서 의미를 보면
prefix : 접두사 (어떤 단어 앞에 붙어 뜻을 첨가해 하나의 다른 단어를 이루는 말.)
suffix : 접미사(-ly, -ness와 같이 단어 뒤에 덧붙이는 말)
출처- 위키
찾아보니 둘이 완전 반대네..
2) 애플 문서
우선, prefix는 subsquence를 리턴하는데!
initial~specified maximun length까지 요소를 포함하는 것.
suffix는 subsequence를 리턴하는데!
specified position~end of the collection까지 요소를 포함한다.
접두사와 접미사의 반대되는 개념처럼 프로그래밍적으로 이해해도 범위의 시작과 끝을 설정해놓는 게 반대이다.
2. 종류 - prefix
1)prefix
우선, 처음에는 prefix함수가 한개인줄 알았는데... 아니였다
종류는 maxLength, through, upTo, while:
이렇게 있는데 공통으로는
prefix는 최대범위를 지정해준다고 생각하면 되는 것 같다.
1) maxLength
func prefix(_ maxLength: Int) -> Self.SubSequence
아래 1번 케이스는 2번째까지를 최대 값으로 설정해줬으므로 1,2가 출력.
=> 갯수라고 이해하면 쉽다.
let numbers = [1, 2, 3, 4, 5] print(numbers.prefix(2)) //1. [1, 2] print(numbers.prefix(10)) //2. [1, 2, 3, 4, 5]
2) through
maxLength와 달리 해당 index를 포함!
func prefix(through position: Self.Index) -> Self.SubSequence
3)upTo
~까지라는 의미와 같이 해당 인덱스를 포함하지x
func prefix(upTo end: Self.Index) -> Self.SubSequence
예시를 보면 이해가 된다.
let numbers = [10, 20, 30, 40, 50, 60] if let i = numbers.firstIndex(of: 40) { print(numbers.prefix(upTo: i)) } // Prints "[10, 20, 30]"
4)while:
prefix에 클로저를 넣을 수 있다.
요소를 포함해야 하는 경우 true, 제외해야하면 false를 반환.
let numbers = [4, 5, 6, 1, 2] print(numbers.prefix(while: { $0 >= 4 })) // [4,5,6] //4번째는 false가 리턴되므로 종료.
3. 종류 - suffix
suffix는 시작점을 설정해준다고 생각하기
1)maxLength
이것도 prefix와 같다.
길이를 설정해주는 것이다. 단, 뒤에서부터!
let numbers = [1, 2, 3, 4, 5] print(numbers.suffix(2)) // "[4, 5]"
2) from:
시작 설정한 인덱스는 포함하지 않고 그 이후부터 즉 array[n...]과 같다.
suffix는 from 30부터 설정해줘서 그 이후 끝까지 모든 값을 출력해낸다.
let numbers = [10, 20, 30, 40, 50, 60] print(numbers.suffix(from: 30)) // [40, 50, 60]
'developing study' 카테고리의 다른 글
TCA 적용해 iOS앱 만들기 - 첫번째 (0) 2024.08.24 Swift - 비트연산자 (0) 2024.01.24 Swift - replacingOccurences/Subrange (0) 2024.01.12 Swift - CaseIterable (1) 2024.01.12 Swift- enumerated() (1) 2024.01.11