- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 다트
- 코딩테스트
- swift 코딩테스트
- datastructure
- 디자인 패턴
- 프로그래머스 swift
- swift
- 프로그래머스
- 프로그래머스 레벨2
- sort
- 감성에세이
- 스위프트
- 스위프트디자인패턴
- programmer
- 정렬
- 정렬 알고리즘
- 디자인패턴
- Design Pattern
- 알고리즘
- 프로그래머스 level1
- swift 알고리즘
- programmers
- 정렬알고리즘
- coding test
- Algorithm
- swift split
- dart
- rxswift
- 자료구조
- 코테
Bill Kim's Life...
[Swift] Types : Named(명명) Type과 Compound(복합) Type 본문
Swift5의 Named(명명) Type과 Compound(복합) Type에 대해서 살펴봅니다.
#. 개발 환경
- Xcode 11.x 이상
- Swift 5
타입이란?
Swift에서의 지원하는 데이터 형의 타입을 크게 보면 2가지로 분류할 수 있습니다.
- named Type : 명명된 타입
- compound Type : 복합(명명되지 않은) 타입
Named Type
명명된 타입(Named Type)은 클래스, 구조체, 열거형과 프로토콜 등 이름이 있는 타입입니다.
Compound Type
또한 복합 타입(Compound Type)이란 튜플과 함수 등과 같이 이름이 없는 타입을 말합니다.
튜플(Tuple) Type
튜플(Tuple) 타입은 복합(Compound) 타입으로서 아래와 같이 다양한 데이터 묶음에 대해서 새롭게 정의하여 사용할 수 있는 타입입니다.
// 튜플 타입 정의
var greatTuple = (x: 10, y: 20)
print(greatTuple.0) // 10
print(greatTuple.x) // 10
typealias Point = (Int, Int) // typealias를 활요하여 튜플 타입에 이름을 지정할 수 있습니다.
var point = Point(10, 12)
print(point.1) // 12
함수(Function) Type
튜플처럼 함수(Function) Type도 복합(Compound) 타입으로서 아래와 같이 사용할 수 있습니다.
func processPerson (withID: Int) -> () {}
func processVIP (withID: Int) {}
struct Person {
var firstname : String
var lastname : String
}
func nameForPerson1 (withID: Int) -> (name: String, age: Int) {
return ( "Bill", 20)
}
func nameForPerson2 (withID: Int) -> (Person) {
return (Person(firstname: "Joyce", lastname: “Cai"))
}
func nameForPerson3 (withID: Int) -> Person {
return Person(firstname: "Bob", lastname: "Lee")
}
func detailsForPerson (withID: Int) -> (obj: Person, age: Int) {
return (Person(firstname: "Bill", lastname: "Kim"), 10)
}
Variadic Parameter
위에서 설명한 튜플을 사용하면 아래와 같은 이점을 얻을 수 있습니다.
- 다양한 데이터 타입을 담는 배열을 만들 수 있습니다.
- 타입 제한없이 다양한 데이터를 담는 배열을 가질 수 있습니다.
- 구조체의 대체가 가능합니다.
- 기존 구조체보다 훨씬 간단한 형태를 통해서 구조체처럼 사용할 수 있습니다.
- 멀티 리턴 함수를 만들 수 있습니다.
- 함수에서 사용 시 하나 이상의 리턴 값을 반환하는 함수를 만들 수 있습니다.
// 멀티 리턴 함수
func plusAndMinus(a: Int, b: Int) -> (Int, Int) {
return (a + b, a - b)
}
let (plusResult, minusResult) = plusAndMinus(a: 1, b: 2)
print(plusResult) // 3
print(minusResult) // -1
이상으로 Swift에서의 클래스와 구조체의 공통점과 차이점Named(명명) Type과 Compound(복합) Type에 대해서 살펴보았습니다.
아직 Swift를 시작하신지 얼마 안되신 분들은 조금이나마 제 강의를 통해서 Swift에 대한 거부감과 두려움을 떨쳐낼 수 있기를 간절히 바래봅니다.
오늘 하루도 그럼 잘 마무리하시기 바랍니다.
감사합니다.
www.slideshare.net/BillKim8/types-233789913
[참고 자료(References)]
[1] Swift ) Types : https://zeddios.tistory.com/207
[2] Swift 타입의 비밀 : https://academy.realm.io/kr/posts/altconf-2017-manu-rink-secret-life-of-types-in-swift/
[3] Types : https://docs.swift.org/swift-book/ReferenceManual/Types.html#//apple_ref/swift/grammar/type
'CS(컴퓨터 과학) > Swift' 카테고리의 다른 글
[Swift] Collection Types : Array, Dictionary, Set (0) | 2020.06.11 |
---|---|
[Swift] Type Casting : 타입캐스팅에 대해서 알아보자 (0) | 2020.06.11 |
[Swift] Method(메소드) : 인스턴스 메소드와 타입 메소드 (0) | 2020.06.11 |
[Swift] Class & Structure : 공통점과 차이점 (0) | 2020.06.11 |
[Swift] Properties(프로퍼티) : 개념과 사용 방법 (0) | 2020.06.11 |