[Swift] 기본 타입과 컬렉션 타입

김형근·2024년 7월 20일

[Swift] 문법

목록 보기
4/20

🍎 Swift의 기본 타입과 컬렉션 타입

  • Any, AnyObject, nil
  • Array, Dictionary, Set

🍏 1. Any, AnyObject, nil

🧃 Any

  • Any는 Swift의 모든 타입을 지칭하는 키워드입니다. 즉, 기본 데이터 타입부터 사용자 정의 타입까지 어떤 타입도 저장할 수 있습니다.
var someAny: Any = 100 // Int 타입의 값 할당
someAny = "어떤 타입도 수용 가능합니다." // String 타입으로 변경
someAny = 123.12 // Double 타입으로 변경

🧃 AnyObject

  • AnyObject는 모든 클래스 타입을 지칭하는 프로토콜입니다. 이 타입은 클래스 인스턴스만을 수용할 수 있습니다.
class SomeClass {} // 클래스 정의

var someAnyObject: AnyObject = SomeClass() // SomeClass의 인스턴스를 AnyObject로 할당

🧃 nil

  • nil은 값이 없음을 나타내는 키워드입니다. nil은 옵셔널 타입에만 사용될 수 있으며, 어떤 데이터 타입은 들어올 수 있지만 빈 값은 들어올 수 없습니다.
// someAny = nil // 오류 발생: Any는 nil을 받을 수 없음
// someAnyObject = nil // 오류 발생: AnyObject는 nil을 받을 수 없음

🍏 2. 데이터 타입

🧃 Array

  • Array는 순서가 있는 리스트 컬렉션입니다. 같은 타입의 값을 여러 개 저장할 수 있으며, 인덱스를 통해 접근할 수 있습니다.
var integers: Array<Int> = Array<Int>() // 빈 Int 배열 생성
integers.append(1) // 배열에 값 추가
integers.append(100) // 배열에 또 다른 값 추가
print(integers.contains(100)) // true: 100이 배열에 포함되어 있는지 확인
integers.remove(at: 0) // 인덱스 0의 값 제거
print(integers.count) // 1: 현재 배열의 요소 개수 출력

빈 배열은 [] 로 생성할 수 있으며, 불변 배열은 let으로 선언할 수 있습니다.

let immutableArray = [1, 2, 3] // 불변 배열 생성
// immutableArray.append(4) // 오류 발생: 불변 배열에 요소 추가 불가능

🧃 Dictionary

  • Dictionary는 키와 값의 쌍으로 이루어진 컬렉션입니다. 키는 고유해야 하며, 값을 통해 쉽게 데이터를 조회할 수 있습니다.
var anyDictionary: Dictionary<String, Any> = [String: Any]() // 빈 Dictionary 생성
anyDictionary["someKey"] = "value" // 키-값 쌍 추가
anyDictionary["anotherKey"] = 100 // 또 다른 키-값 쌍 추가
print(anyDictionary) // 현재 Dictionary 출력

anyDictionary.removeValue(forKey: "anotherKey") // 특정 키의 값 제거
print(anyDictionary) // 수정된 Dictionary 출력

🧃 Set

  • Set은 순서가 없고, 멤버가 유일한 컬렉션입니다. 중복된 값을 허용하지 않으며, 집합 연산을 지원합니다.
var integerSet: Set<Int> = Set<Int>() // 빈 Set 생성
integerSet.insert(1) // 값 추가
integerSet.insert(100) // 값 추가
integerSet.insert(99) // 값 추가
integerSet.insert(99) // 중복 삽입은 무시됨

let setA: Set<Int> = [1, 2, 3, 4, 5] // Set A 생성
let setB: Set<Int> = [3, 4, 5, 6, 7] // Set B 생성

let union: Set<Int> = setA.union(setB) // 합집합 계산
let intersection: Set<Int> = setA.intersection(setB) // 교집합 계산
let subtracting: Set<Int> = setA.subtracting(setB) // 차집합 계산
profile
꾸준히 기록하기

0개의 댓글