티스토리 뷰

반응형

 

 

 


Accessing Individual Elements
컬렉션 내 개별적인 값 접근하기 

Collection프로토콜을 채택한 컬렉션들의 요소는 특정 위치의 인덱스를 통해 접근할 수 있습니다. 딱 하나 예외적으로, collection의 endIndex 프로퍼티를로는 값을 접근할 수 없습니다.

"endIndex는 값의 인덱스가 아닌 컬렉션의 끝을 지나간 인덱스"로, 어떠한 컬렉션의 값과도 대응되지 않습니다. 

 

 

아래의 경우 특정 문자열의 맨 처음 인덱스 Character 문자를 출력하는 코드입니다. 


위의 코드를 보시면, String 문자열인 text를 선언하고, text의 맨 첫 인덱스를 가리키는 String.index타입의 text.startIndex를 startIndex에 저장하고 있습니다. 해당 인덱스를 통해 문자열은 배열 접근하듯 첨자 접근하여 문자를 탐색할 수 있습니다. 

text[startIndex]의 값을 firstCharacter에 할당하며 그 값은 맨 첫 문자인 "H"가 됩니다.

 

 

Collection 프로토콜은 배열의 인덱스 첨자 접근 하듯, 그들의 인덱스 첨자를 통해서 값을 접근하는 것에 기반한 많은 연산을 제공하며 이들에 대한 기본적인 기능들을 선언 및 제공하고 있습니다. 

예를들면, first 프로퍼티를 통해 컬렉션의 맨 처음 값을 접근할 수 있습니다. 다만, 첫번째 값이 존재하지 않을 수도 있기 때문에(컬렉션이 비어있는 경우) nil이 될 수 있는 옵셔널 타입(Character?)으로서 반환됩니다.

 

 

import UIKit

let text = "Hello!"

print(text.first)
// prints "Optional("H")"

 

위의 코드는 first 프로퍼티를 활용하는 예시입니다. Optional 타입, Characer?를 반환하며, first값이 존재하므로 그 값에 Optional이 래핑 된 값을 반환하게 됩니다. 

이처럼 컬렉션에 있는 특정 값을 접근하기 위해서는 해당 컬렉션의 계수 범위 내에서 접근을 해야 값을 얻을 수 있습니다.
접근 가능한 범위는 startIndex부터 endIndex 인덱스 까지의 유효한 후속 항목들을 찾고, 최종적으로 계수범위 내의 셋을 구할 수 있습니다.


이때 다른 타입을 가진 startIndex 같이 인덱스 타입이 다른 모든 경우에 경우에는 다른 타입의 컬렉션에 대해서 정상적으로 접근할 수 없습니다. 또한, 컬렉션이 변경되는 작업 간 특정 범위는 유효하지 않는 접근범위가 될 수 있습니다.

만약 변경가능한 컬렉션 내의 인덱스 무효화에 해단 더 많은 정보가 필요하다면, 당신이 사용하는 특정 타입에 대한 MutableCollection, RangeReplaceableCollection 프로토콜에 대해 알아보시기 바랍니다. 

 

 


Accessing Slices of a Collection
컬렉션 부분 범위 접근하기

prefix(while:), suffix(_:) 메서드를 사용하거나, 범위 표현식을 첨자 접근에 사용하는 등의 방식으로 컬렉션의 부분범위 값을 접근할 수 있습니다. 또한 이렇게 접근 되어진 부분 범위 값들은 원본 컬렉션의 값들과 색인이 공유되어 다뤄집니다.(컬렉션 생성 이후 배열 값이 변경되지 않는 한)

아래의 예시는 prefix(while:) 메서드의 반환값으로 생성된 firstWord 상수를 출력하는 예시 코드입니다.

 

 

prefix(while:) 같은 메서드로 부분 범위 값을 얻을 수도 있지만, 그 이외에 범위 표현식을 통해서 특정 범위의 값들을 접근할 수 있습니다.


위의 코드는 firstIndex를 통해서 text 문자열의 첫 " " 문자가 있는 인덱스를 찾습니다.만약 해당 값이 존재한다면 해당 공백 앞의 문자 범위를 접근해서 그 문자열을 출력합니다.


결과적으로, 첫번째 단어를 출력하는 prefix(while:) 메서드 결과와 동일한 문자열을 출력합니다.

 

 

반응형
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
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 31
글 보관함