[Swift 공부] Data Type-safe, typealias, Tuple

데이터 타입 안심

Swift는 데이터 타입을 안심하고 사용할 수 있는 Type-safe 언어이다. 타입을 안심하고 사용할 수 있다는 말인데, 예를 들어 int 타입변수에 String 타입을 대입하면 컴파일 오류가 발생한다.




타입 별칭 (typealias)

사용자가 임의로 데이터타입에 별칭을 부여할 수 있다. (기존에 Objective C 에서는 Block 값을 지정해서 쓰고 있었다.) 기존에 사용하던 데이터타입과 임의로 지정한 데이터타입 모두 사용가능하다.

typealias MyInt = Int
typealias YourInt = Int
typealias MyDouble = Double

let age:MyInt = 31
var yourAge:YourInt = 20

yourAge = age // 같은 Int 타입이기 때문에 가능함.

let record:MyDouble = 89.5 // 다른 타입도 별칭 사용가능함.
cs


튜플 (Tuple)

튜플은 타입의 이름이 따로 지정되어 있지 않은 사용자가 마음대로 만드는 데이터 묶음 타입니다.
구조체의 방식과 유사하다.

// ------- 1. 튜플 ---------//
// 3가지 Type을 갖는 튜플
var person:(StringInt, Double) = ("KimJW"31170.8)

// 인덱스를 통한 데이터 접근 가능
print("이름 : \(person.0), 나이 : \(person.1), 키 : \(person.2)")
// 결과) 이름 : KimJW, 나이 : 31, 키 : 170.8

// 인덱스를 통한 값 할당 가능
person.0 = "TestName"
person.1 = 100
person.2 = 190.22

print("이름 : \(person.0), 나이 : \(person.1), 키 : \(person.2)")
// 결과) 이름 : TestName, 나이 : 100, 키 : 190.22
cs


각 요소의 접근과 사용에 대해서는 손쉽게 사용할 수는 있으나, 어떤의미로 사용하고 있는지 유추하기 어렵다.
그래서 튜플의 요소마다 이름을 붙여 줄 수 있다.

// ------- 2. 튜플 ---------//
// 3가지 Type을 갖는 튜플 (접근요소의 이름이 추가됨)
var personType:(name:String, age:Int, height:Double) = ("KimJW"31170.8)
// 요소를 통한 데이터 접근 가능
print("이름 : \(personType.name), 나이 : \(personType.age), 키 : \(personType.height)")
// 결과) 이름 : KimJW, 나이 : 31, 키 : 170.8
cs


튜플타입을 사용하다 보면 요소가 길어 질 수 있는데, 매번 사용할때 긴내용을 붙여 넣기 보다는 타입 별칭을 통해 정리해서 사용하는 것도 방법인것 같다.

// ------- 3. 튜플 ---------//
// 추가적으로 튜플의 별칭 지정해서 사용하기
typealias PersonTuple = (name:String, age:Int, height:Double)

let kimjw:PersonTuple = ("KimJW"31170.8)
let parksj:PersonTuple = ("ParkSJ"28161.3)

print("이름 : \(kimjw.name), 나이 : \(kimjw.age), 키 : \(kimjw.height)")
print("이름 : \(parksj.name), 나이 : \(parksj.age), 키 : \(parksj.height)")
// 결과) 이름 : KimJW, 나이 : 31, 키 : 170.8
// 결과) 이름 : ParkSJ, 나이 : 28, 키 : 161.3
cs


댓글