Programming/Swift

[Swift] - Swift Type 알아보기

devssun 2019. 6. 11. 22:21
728x90
반응형

Swift Type

  1. Swift는 root가 없다 $noRoot
  • Swift는 특별한 root 타입이 없다
  • Java, Objective-c 등 정적 타입 언어는 root 타입을 갖는다.

Java

java.lang.Object
  ㄴ java.lang.Number
    ㄴ java.lang.Integer

Objective-c

NSObject
  ㄴ NSValue
    ㄴ NSInteger

Swift

Int

Java, Objective-c 모두 프로토콜을 따르며 Swift는 Int가 자신 자체의 타입이며 구조체로 다신의 타입을 정의한다

Swift에서는 모든 것이 상속없이 구조체이다

각 타입 간의 커플링을 느슨하게 처리
전체 타입 시스템에서 확장성 up
클린 아키텍쳐 설계 가능

명명된 타입(Named Type) : 사용할 때 이름을 붙이는 것

  • Class
  • Struct
  • Enum
  • Protocol

복합 타입(Compound Type) : 이름이 없는 타입

  • Tuple

    var tuples = (x: "123", y: "456")
     
    print(tuples.x + "==" + tuples.0)   // tuple의 매개변수 이름으로 접근하거나 .0 / .1 로 접근할 수 있다
     
    tuples = ("10", "20")   // 매개변수가 없어도 가능하다
    • tuple 타입은 이름이 없지만 이름을 붙일 수 있다. typealias 이용
    typealias xcode = (String, String)
    var tuples2 = xcode("123", "456")
  • Function (Int) -> Int


Optional

안전하게 코딩할 수 있게 도와준다

Declaration

enum Optional<Wrapped>

옵셔널로 설정된 값은 값이 있을 수도, 없을 수도 있다.
옵셔널을 강제로 해제하기 위해 강제 언래핑을 할 수 있다.

/// Optional 타입으로 변수 생성
var optionalVariable: Int?
 
print(optionalVariable) // Optional("")
 
/// 강제 언래핑 수행 (!)
/// 값이 없는데 강제 언래핑을 처리했기 때문에 에러가 발생한다.
print(optionalVariable!)  // nil error

강제 언래핑 대신 if let 이나 guard 문법을 사용하면 안전한 코딩이 가능해진다.


출처 : https://academy.realm.io/kr/posts/altconf-2017-manu-rink-secret-life-of-types-in-swift/

반응형