점진적 과부하 개발 블로그

Swift 콜렉션 타입(Collection Types) 본문

Swift

Swift 콜렉션 타입(Collection Types)

지용빡 2022. 6. 23. 16:53
반응형
콜렉션 타입(Collection Types) 
  • 배열(Array), 집합(Set), 딕셔너리(Dictionary)를 사용하여 데이터를 구성한다.
Swift는 콜렉션의 값을 저장하기 위한 배열, 집합, 딕셔너리와 같은 3개의 원시적인 콜렉션 타입을 제공한다. 배열은 콜렉션 값에 순서를 가지고 있고, 집합은 반복되지 않은 값에 순서가 없는 콜렉션 타입이다. 딕셔너리는 Key-Value 쌍의 순서가 없는 콜렉션 타입이다.

  • Swift에 배열, 집합, 딕셔너리는 저장할 수 있는 값의 타입과 키에 대해 항상 명확하다.
  • 실수로 잘못된 타입을 추가할 수 없다. 또한 콜렉션에서 검색할 값에 대해 타입이 명확하다는 것을 의미한다.
  • 제네릭 콜렉션(generic collections)으로 구현된다.
콜렉션의 가변성(Mutablility of Collections)
  • 배열, 집합, 딕셔너리를 생성하고 변수에 할당하면 생성된 콜렉션의 아이템을 추가, 삭제, 변경이 가능하다.
  • 상수에 할당하면 당연히 변경이 불가능하다.
  • 변경이 필요가 없는 경우에는 상수로 콜렉션을 만드는 것이 좋다.
    • 코드에 대해 더 쉽게 추론이 가능하고 컴파일러가 생성한 콜렉션의 성능을 최적화 할 수 있다.
배열(Arrays)
  • 순서대로 같은 타입의 값을 저장한 콜렉션 타입이다.
  • 같은 값은 배열에 다른 순서로 존재할 수 있다.
var sample: [String] = [] // 빈 배열 생성
sample.append("Apple") // 배열에 아이템 추가
sample.isEmpty // 빈 배열인지 확인
sample.count // 아이템 갯수 확인

 

배열 반복(lterating Over an Array)
  • for문을 사용하여 배열의 전체 값을 알 수 있다.
var sample = [1, 2, 3]

for i in sample {
	print(item)
{
  • 값도 필요하다면 enumerated() 메서드를 사용하면 된다.
  • 배열의 각 아이템에 대해 enumerated() 메서드는 정수와 아이템을 조합하여 튜플로 반환한다. 정수는 0부터 시작하여 각 아이템에 대해 1씩 증가한다.
  • 전체 배열을 열거하는 경우 이 정수는 아이템의 인덱스와 일치한다. 튜플을 임시의 상수 또는 변수도 분해할 수 있다.
var sample = [1, 2, 3]

for (index, value) in sample.enumerated() {
	print(index + value)
}

 

집합(Sets) 
  • 콜렉션에 순서와 상관없이 같은 타입의 다른 값을 저장한다.
  • 아이템의 순서가 중요하지 않거나 아이템이 반복이 되면 안될 때 배열(Array) 대산에 집합(Sets)을 사용할 수 있다.
집합 타입을 위한 해쉬 값(Hash Values for Set Types)
  • 해쉬 값(hash value)을 계산할 수 있는 타입을 제공해야 한다.
  • Swift의 모든 기본 타입은 기본적으로 hashable이고 집합의 값 타입 또는 딕셔너리의 키 타입으로 사용할 수 있다.
  • 연관된 값이 없는 열거형 케이스 값은 기본적으로 hashable이다.
집합 타입 구문(Set Type Syntax)
  • Swift 집합의 타입은 Element가 집합의 저장할 값의 타입을 나타내는 Set<Element>로 작성된다.
  • 배열과 반대로 집합은 짧은 등가 형식이 없다.

 

반응형