본문 바로가기
iOS/Swift

[iOS/Swift] Type (X) Types (O)

by iosdevlime 2022. 11. 5.

이번 포스팅은, 

 

추후 다룰 Enumeration(Enum), function, class, struct

현재까지 다뤄 온 내용보다 더욱 복잡하고, 난해한 문법내용을 다루기에 앞서

 

지속적으로 언급되는 타입(Type)에 대해 조금 더 자세히 알아보도록 하겠습니다.

 

 


 

 

Type?

Data Type은 사실 구조체(Struct)로 구성된 Type이다?!

 

앞서 상수와 변수의 타입(Type)을 결정하는 키워드인

정수형(Int, UInt), 부동소수형(Double, Float), 문자형(String, Character), 참거짓(Boolean) 과 같은 Data Type은,

 

사실,

구조체(Struct) 로 정의되어 구현된 타입이자, 명명된 타입 입니다.

 

?!???

 

 

 

Data Type의 정의

  • 'Swift Language Reference' 에 따르면..
  • 현재까지 다뤄온 Data Type을 아래와 같이 정의합니다.

 

데이터 타입(Data Type)은, 일반적으로 기본(혹은 원시) 타입이라고 간주합니다.
숫자, 문자, 문자열을 나타내는 타입은 구조체를 통해 정의되고 구현됩니다.

 

 

  • 즉, 타입(Type)이란 데이터의 메모리 저장과 처리 방식을 알리는 역할 담당합니다.
    • 결과적으로 Data Type은, Type이란 큰 범주에 포함되며,
    • 구조체(Struct)란 형태로 Swift 표준 라이브러리에서 이미 정의된 타입입니다.

 

  • Data Type을 command키 를 눌러 정의 부분을 살펴보면..
    • @frozen public struct(구조체)로 구성되어 있는 것을 볼 수 있습니다.

Command 키를 누르고, 해당 Data Type을 클릭하면 definition 내용을 볼 수 있다.Command 키를 누르고, 해당 Data Type을 클릭하면 definition 내용을 볼 수 있다.
Command 키를 누르고, 해당 Data Type을 클릭하면 definition 내용을 볼 수 있다.

 

 


 

 

Types의 2가지 종류

Swift에서의 Type은 명명된 타입 복합타입 2가지 종류로 나뉜다

 

앞서, Type이 하나의 범주를 가진 개념이라는 것을 살펴 보았습니다.

 

Types은 크게 명명된 타입(named Type)복합타입(compound Type)으로 나뉩니다.

 

추후 포스팅에서 다룰 클래스(Class), 구조체(Struct), 열거형(Enum)과 관련된 내용이 후술될 예정이므로,

'아, 타입이란 이런 것이구나!' 하는 느낌적인 느낌으로 알아보도록 하겠습니다.

 

 

 

명명된 타입 (named Type)

  • 정의, 구현할 때 특정 이름을 부여할 수 있는 타입입니다.
    • 명명된 타입은 클래스, 구조체, 열거형, 프로토콜을 포함합니다.
    • 즉, 특정 형태의 코드를 구성하고, 해당 타입의 이름(Named)을 명명할 수 있다는 것을 의미합니다.
      • '사용자 정의에 따라 명명된(이름이 부여된) 타입'
      • 앞서 다룬 Data TypeCollection Type(array, dictionary, set) 또한 포함합니다!
  • 한가지 예시를 살펴보자면..
Class myClassName {
	// property
    // method
    // initializer
    // ...
}

// myClassName은 임의로 명명하였으며,
// 사용자가 정의한 클래스, 즉 myClassName이란 타입입니다.

 

 

 

복합 타입 (Compound Type)

  • 언어 자체에 정의된 이름이 없는 타입입니다.
    • 복합 타입은 함수(function)튜플(Tuple) 2가지 유형이 있습니다.
    • 타입 자체의 이름이 없으므로, 명명된 타입을 직접 가져와 활용합니다!
  • 앞서 다룬 튜플(Tuple)의 예시로 살펴보자면..
var someTuple : (Int, string) = (30, "Lime")

// 여기서, 튜플 'someTuple'의 Type은?
// (Int, string)

// 즉, 기존에 명명된 Data Type을 활용하여
// 새로운 형태의 복합 타입을 만들어 낸다.

 

 


 

Types와 관련된 내용은, 추후 문법 포스팅에서 지속적으로 다룰 예정입니다.

 

댓글