ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Swift - prefix, suffix
    developing 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

    댓글

Designed by Tistory.