250x250
반응형
05-21 00:05
Today
Total
«   2024/05   »
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 31
Notice
Recent Posts
Recent Comments
Link
Archives
관리 메뉴

Bill Kim's Life...

[Swift] Types : Named(명명) Type과 Compound(복합) Type 본문

CS(컴퓨터 과학)/Swift

[Swift] Types : Named(명명) Type과 Compound(복합) Type

billnjoyce 2020. 6. 11. 14:52
728x90
반응형
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

 

위에서 설명한 튜플을 사용하면 아래와 같은 이점을 얻을 수 있습니다.

 

  1. 다양한 데이터 타입을 담는 배열을 만들 수 있습니다.
    • 타입 제한없이 다양한 데이터를 담는 배열을 가질 수 있습니다.
  2. 구조체의 대체가 가능합니다.
    • 기존 구조체보다 훨씬 간단한 형태를 통해서 구조체처럼 사용할 수 있습니다.
  3. 멀티 리턴 함수를 만들 수 있습니다.
    • 함수에서 사용 시 하나 이상의 리턴 값을 반환하는 함수를 만들 수 있습니다.
// 멀티 리턴 함수
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

 

[Swift] Types

[Swift] 타입(Types) 에 관한 강의 자료입니다.

www.slideshare.net

 

 

 

 


[참고 자료(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

 

728x90
반응형
Comments