서론
Swift의 타입별칭, 튜플, 컬렉션형, 열거형 타입에 대한 내용을 정리하였다.
본론
3.1 Swift는 왜 safe한 언어일까?
애플은 스위프트를 소개할 때 Safe (안전하고), Fast(빠르며), Expressive(표현하기 좋은) 언어라고 하였다.
그렇다면 무엇을 근거로 Safe하다고 하는것일까?
스위프트는 타입에 굉장히 민감하고 엄격하다. 스위프트에서는 서로 다른 타입의 값을 할당시 컴파일 오류로 알려주기때문에 타입이 다른 값을 할당하는 실수를 줄일 수 있다. 이것을 타입확인이라고 하며 타입확인을 통해 서로다른 타입을 섞어 사용할 때 발생할 수 있는 런타임 오류를 피하는것이 가능해진다. 만약 서로 다른 타입끼리 데이터를 교환하고 싶다면 반드시 타입캐스팅을 거쳐야 하며 값타입의 데이터 교환은 정확히 말하자면 타입캐스팅이 아닌 새로운 인스턴스를 생성하여 할당하는것이다.
3.2 타입 별칭?
Swift에서는 이미 존재하는 데이터 타입에 임의의 별칭을 부여할 수 있다. 이 기능은 특히 클로저를 사용할 때 타입에 별칭을 부여함으로써 가독성을 높이는 효과를 발휘한다.
예시 1
import UIKit
typealias IntName = Int
// Int 타입 대신
var intValue : IntName = 3
print(intValue)
// 결과 : 3
위는 Int 타입을 IntName 으로 타입별칭을 부여
3.3 튜플
튜플은 타입의 이름이 따로 지정되어 있지 않은 프로그래머가 자유롭게 만드는 타입이다.
지정된 데이트의 묶음이며 원시 구조체 형태와 비슷하다.
튜플에 포함되는 데이터의 개수는 자유롭게 정할 수 있다.
import UIKit
// Here are two tries for the Closure I need
var rupi : (String, Int, String) = ("루피", 20, "선장")
// 인덱스 접근을 통해 값을 뽑을수 있음
print(rupi.0, rupi.1, rupi.2)
// 값의 할당도 가능
rupi.1 = 21
print(rupi.1)
다만 위와같이 튜플을 만들면 요소의 의미 파악이 어렵기 때문에 요소마다 아래처럼 이름을 붙이는것을 강력하게 추천합니다.
import UIKit
// Here are two tries for the Closure I need
var rupi : (nmae: String, age: Int, job: String) = ("루피", 20, "선장")
// 요소의 이름을 통해 값을 추출
print(rupi.nmae, rupi.age, rupi.job)
튜플의 요소에 이름을 붙여준 예
3.4 컬렉션형 ( 배열(Array), 딕셔너리(Dictionary), 셋(Set))
3.4.1 배열 (Array)
Array(배열)은 같은 타입의 데이터를 일렬로 나열한후 순서대로 저장하는 형태의 컬렉션
// 기본 배열표현
var names : Array<String> = ["Rupi","Zoro","Nami"]
// 축약 배열표현
var names2 : [String] = ["Rupi","Zoro","Nami"]
// 빈 배열의 표현
var emptyArray: [Any] = [Any]()
var emptyArray2: [Any] = Array<Any>()
var emptyArray3: [Any] = []
- 배열은 각 요소에 인덱스를 통해 접근 가능
- 인덱스는 0부터 시작
- 잘못된 인덱스 접근시 Exception Error를 발생
- 맨 처음과 마지막 요소는 각각 first와 last property를 통해 가져올 수 있음
- index(of:) 메서드를 통해 해당 요소의 인덱스 알 수 있었으나 됬음 아래 링크는 해당 이유
(참고 : www.hackingwithswift.com/articles/177/its-time-to-stop-using-index-of / developer.apple.com/documentation/swift/array/3126950-index) 따라서
- 중복된 요소가 있다면 제일먼저 발견된 요소의 인덱스 반환
- 맨뒤에 추가하려면 append(_:) 사용
- 중간 요소삽입방법은 insert(_:at:) / 삭제방법은 remove(_:)
3.4.2 딕셔너리 (Dictionary)
딕셔너리는 요소들이 순서없이 키와 값의 쌍으로 구성되는 컬렉션 타입.
딕셔너리의 Key는 유일한 식별자
3.4.3 셋 (Set)
Set은 같은 타입의 데이터를 순서 없이 하나의 묶음으로 저장하는 컬렉션 타입
Set 내의 값은 모두 유일한 값이며 중복된 값이 존재하지 않는다.
-> 순서가 중요하지 않으면서 각 요소가 유일한 값이어야 하는 경우 사용
Set의 요소로는 해시가능한 값이 들어와야한다. (기본 데이터 타입은 모두 해시 가능한 값)
3.5 열거형 (Enum)
- 기본적인 열거형
- 원시값
- 연관값
- 항목순회
- 순환열거형
결론
◇ 요약 ◇
①
②
③
④
⑤
참고자료
https://brody.tistory.com/103
https://www.debugcn.com/ko/article/17442336.html
'■ 문법 ■ > Swift' 카테고리의 다른 글
#02. Swift의 명명규칙과 마크업 문법을 활용한 문서화 주석 (0) | 2021.03.05 |
---|---|
#01. Swift에 대하여 (0) | 2021.03.04 |
03 Swift 익명함수 (0) | 2019.11.29 |
Swift 에러 정리 [최종 업데이트 19.11.28] (0) | 2019.11.28 |
02 옵셔널 변수, 데이트 피커, 델리게이트(delegate) (0) | 2019.11.28 |
댓글