ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 데이터 타입 (고급)
    Swift 2020. 10. 30. 15:23

    안녕하세요. 그린입니다!

    이번 포스팅에서는 저번 포스팅에 이어 데이터 타입에 대해 좀 더 심오하게 학습해보겠습니다.

    저번 시간을 간단히 복기하자면 기본 자료형 정수/실수/문자/문자열/참거짓등의 타입들이 있었죠!

    그 기억을 되새기며 한층 발전된 실력을 만들어 가보도록 하겠습니다.

     

    스위프트의 가장 강조되는 3대 특징 중 안정성(Safe)이 가장 잘 나타나는 파트입니다.

    서로 다른 타입끼리의 데이터 교환은 꼭 타입캐스팅(형변환)을 거쳐야 합니다.

     

    스위프트는 데이터 타입을 안심하고 사용할 수 있는 언어입니다.

    타입을 안심하고 사용할 수 있다는 말은 그만큼 실수를 줄여 오류 발생 확률을 낮추는것을 의미합니다.

    스위프트가 컴파일 시 타입을 확인하는 것을 타입 확인 이라고 합니다.

    또한, 특정 타입을 명시하지 않아도 컴파일러가 할당된 값을 기준으로 변수나 상수의 타입을 결정합니다.

     

    그럼 이러한 기본 개념을 이해하고 다양한 발전된 데이터 타입에 대해 알아보도록 하죠^^

    1. 타입 별칭

    데이터 타입에 임의로 다른 이름(별칭)을 부여할 수 있습니다.

    타입 별칭은 typealias 키워드를 통해 생성합니다.

    타입 별칭

    2. 튜플(Tuple)

    타입의 이름이 따로 지정되어 있지 않은, 프로그래머 마음대로 만드는 타입입니다.

    '지정된 데이터의 묶음' 이라고 표현됩니다.

    포함될 데이터의 개수는 자요롭게 정할 수 있습니다.

    튜플의 각 요소를 이름 대신 숫자로 표현합니다.

    Tuple

    아래와 같이 요소 이름을 통해 값을 할당할 수도 있습니다.

    또한, 값을 주지 않고 선언을 할수도 있습니다.

    요쇼 이름을 통한 값 할당

    튜플 별칭 지정도 아래와 같이 가능합니다.

    Tuple 별칭 지정

    3. 배열(Array)

    스위프트는 튜플 외에도 많은 수의 데이터를 묶어서 저장하고 관리할 수 있는 컬렉션 타입을 제공합니다.

    컬렉션 타입은 배열(Array), 딕셔너리(Dictionary), 세트(Set) 등이 있습니다. 우선 배열에 대해 알아보겠습니다.

    배열은 같은  타입의 데이터를 일렬로 나열한 후 순서대로 저장하는 형태의 컬렉션 타입입니다.

    각기 다른 위치에 같은 값이 들어갈 수도 있습니다.

    Array 키워드 사용하여 타입 이름의 조합으로 사용합니다.

    또한 생성 시 대괄호로 묶어줘야하며 배열의 인덱스는 0부터 시작합니다.

    Array의 다양한 선언과 생성 방법

    배열 내 사용할 수 있는 프로퍼티와 메서드

    1) isEmpty : 비어있는 배열인지 확인

    2) count : 배열에 존재하는 요소 갯수 확인

    3) firstIndex(of: ) : 맨 처음 요소 인덱스 확인

    4) first : 맨 처음 요소 확인

    5) last : 맨 마지막 요소 확인

    6) append(_:) : 맨 뒤에 요소 추가

    7) insert(_:at:) : 중간에 요소 추가

    8) remove(_:) : 요소 삭제

    배열 프로퍼티
    배열 프로퍼티 및 메서드

    4. 딕셔너리(Dictionary)

    요소들이 순서없이 키와 값의 쌍으로 구성되는 컬렉션 타입입니다.

    키는 같은 이름을 중복해서 사용할 수 없습니다.

    딕셔너리의 선언과 생성은 아래와 같이 나타낼 수 있습니다.

    딕셔너리 선언과 생성

    딕셔너리의 키와 값 타입을 정확히 명시하였다면 [:] 만으로도 빈 딕셔너리 생성이 가능합니다.

    빈 딕셔너리 선언과 생성

    딕셔너리는 각 값에 키로 접근할 수 있습니다.

    다만, 배열과 다르게 내부에 없는 키로 접근해도 오류가 발생하지 않고 nil을 반환합니다.

    removeValue(forKey:) : 특정 키에 해당하는 값을 제거

    count : 딕셔너리 수 체크

    딕셔너리 프로퍼티

    5. 세트(Set)

    같은 타입의 데이터를 순서 없이 하나의 묶음으로 저장하는 형태의 컬렉션 타입입니다.

    세트 내 값은 모두 유일한 값으로 중복된 값이 존재하지 않습니다. 고로, 순서가 중요하지 않거나 각 요소가 유일한 값이어야 하는

    상황에 세트를 사용합니다. 또한, 세트의 요소로는 해시 가능한 값이 들어와야 됩니다.

    (해시 가능한 값 : 스위프트의 기본 데이터 타입은 모두 해시 가능한 값)

    Set 키워드와 타입 이름의 조합으로 사용

     

    세트의 선언과 생성

    insert(_:) : 세트에 새로운 요소 추가

    remove(_:) : 세트에 기존 요소 삭제

    세트 요소 추가 및 삭제

    [집합관계]

    세트는 자신 내부의 값들이 모두 유일함을 보장하므로, 집합관계를 표현하고자 할 때 유용하게 사용됩니다.

    1) 교집합 : .intersection

    2) 여집합의 합(배타적 논리합) : .symmetricDifference

    3) 합집합 : .union

    4) 차집합 : .subtraction

    [집합관계 활용]

    1) 배타적인지 : .isDisjoint(with:_)

    2) 부분집합인지 : .isSubset(of:_)

    3) 전체집합인지 : .isSuperset(of:_)

    -> 해당 활용은 참/거짓으로 나타납니다.

     

    추가로, 컬렉션에서 임의의 요소를 추출과 뒤섞기 메서드가 있습니다.

    1) 임의의 요소 추출 : randomElement()

    2) 뒤섞기 : shuffle()

    3) 임의의 순서로 섞어서 반환 : shuffled()

    6. 열거형

    열거형은 연관된 항목들을 묶어서 표현할 수 있는 타입입니다.

    컬렉션과 달리 정의해준 항목 값 외에는 추가/수정이 불가합니다.

     

    [사용되는 경우]

    1) 제한된 선택지를 주고 싶을때

    2) 정해진 값 외에는 입력받고 싶지 않을때

    3) 예상된 입력 값이 한정되어 있을때

        (예시 -> 나라/지역/성별 등)

     

    열거형은 enum() 이라는 키워드로 선언할 수 있습니다.

    enum 선언

    원시값(Raw Value) : .rawValue

    원시값의 활용

    -. 항목순회 : allCases 라는 이름의 타입 프로퍼티를 열거형에 붙여줍니다.

    -. 순환열거형 : indirect 키워드를 case 키워드 앞에 붙여줍니다.

    -. 비교가능 열거형 : Comparable를 사용하여 비교합니다.

     

     

    이상으로 이번 포스팅에서는 심화 데이터 타입에 대해 다뤄봤습니다.

    데이터 타입이 사실 별로 없어 보이지만 적재적소에 맞는것을 활용하기란 쉽지 않습니다.

    기본적인 코딩 문법 지식을 머릿속에 기억하여 많은 코딩을 통해 알맞게 사용할 수 있도록 해야되겠습니다.

    다음 포스팅에서는 연산자를 다뤄보겠습니다.

    만약 부족하거나 수정되어야할 부분이 있으면 댓글 꼭 부탁드립니다 ^^

    감사합니다 :D

    'Swift' 카테고리의 다른 글

    흐름제어  (0) 2020.11.01
    연산자  (0) 2020.11.01
    데이터 타입 (기본)  (0) 2020.10.30
    스위프트 프로그래밍 규칙  (0) 2020.10.29
    스위프트 기초  (0) 2020.10.29
Designed by Tistory.