소피it블로그

[Swift 공식문서] The Basics 정리 (6) - Type Aliases, Booleans, Tuples 본문

개발_iOS/스위프트

[Swift 공식문서] The Basics 정리 (6) - Type Aliases, Booleans, Tuples

sophie_l 2022. 5. 12. 10:30

https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html

 

The Basics — The Swift Programming Language (Swift 5.6)

The Basics Swift is a new programming language for iOS, macOS, watchOS, and tvOS app development. Nonetheless, many parts of Swift will be familiar from your experience of developing in C and Objective-C. Swift provides its own versions of all fundamental

docs.swift.org

1. Type Aliases

  • typealias 키워드를 사용하여 이미 존재하는 타입 명에 별칭을 붙여주는 것이다.
  • 맥락상 더 적절한 이름을 붙여주기 위해 사용함
  • 정의해준 후에는 본래의 타입 명을 사용하는 부분에서 alias를 대신 사용할 수 있다.

 

2. Booleans

  • 스위프트는 Bool이라는 이름으로 boolean values를 제공하는데, 이는 반드시 true 혹은 false 둘 중 하나의 값을 갖는다.
  • 특정 상수나 변수를 true 혹은 false로 지정해주었다면 따로 타입을 명시하지 않아도 된다. 스위프트가 제공하는 타입 추론 기능 덕분.
  • if문과 같은 조건절에서 사용하기 유용하다.
  • if문에서 불리언 값이 아닌 값을 불리언처럼 사용하면 오류가 난다. 스위프트의 타입 세이프티 때문.
let i = 1
if i {
    // this example will not compile, and will report an error
}


let i = 1
if i == 1 {
    // this example will compile successfully
}

// 후자의 코드가 작동하는 이유는 if i == 1이라는 비교가 Bool 타입이기 때문

 

3. Tuples

  • 여러 값들을 () 안에 하나로 묶은 값이며, 튜플 안의 값들은 어느 타입이든 상관 없다. 또한 서로 같은 타입일 필요도 없다.
  • 튜플 내의 값들을 분해할 수도 있다.
let http404Error = (404, "Not Found")
// http404Error is of type (Int, String), and equals (404, "Not Found")

// 분해
let (statusCode, statusMessage) = http404Error
print("The status code is \(statusCode)")
// Prints "The status code is 404"
print("The status message is \(statusMessage)")
// Prints "The status message is Not Found"
  • 튜플 내의 값들 중 일부만 필요하다면 나머지는 _로 적어주면 된다.
let (justTheStatusCode, _) = http404Error
print("The status code is \(justTheStatusCode)")
// Prints "The status code is 404"
  • 인덱스 숫자로도 접근할 수 있다.
print("The status code is \(http404Error.0)")
// Prints "The status code is 404"
print("The status message is \(http404Error.1)")
// Prints "The status message is Not Found"
  • 튜플을 정의할 때 각 요소들에 이름을 붙여줄 수도 있으며, 그 경우에는 해당 이름을 사용하여 요소들에 접근할 수 있다.
let http200Status = (statusCode: 200, description: "OK")

print("The status code is \(http200Status.statusCode)")
// Prints "The status code is 200"
print("The status message is \(http200Status.description)")
// Prints "The status message is OK"
  • 튜플은 특히 함수의 리턴값으로 쓰기에 용이하다. 하나의 타입으로 된 하나의 값만 리턴할 때에 비해 여러 타입의 값들을 묶어서 리턴하면 더 많은 정보를 제공할 수 있기 때문이다.
  • 너무 복잡한 데이터 구조에는 적합하지 않다. 그럴 경우에는 class나 struct로 선언할 것