데이터 타입
💡 데이터 타입
- 숫자(Int, UInt, Float, Double)
- Bool
- 문자(String, Character)
- Tuple
- Any
Int, UInt, Float, Double
Int → 양수와 음수 모두를 표현할 수 있는 정수형 데이터 타입
UInt → 양수만을 표현할 수 있는 부호 없는 정수형 데이터 타입
Float → 32비트 부동 소수점을 표현하는 데이터 타입
Double → 64비트 부동 소수점을 표현하는 데이터 타입
Bool
→ true와 false를 표현할 수 있는 데이터 타입
String, Character
String → 문자열을 표현하는 데이터 타입으로 텍스트를 표현
Character → 하나의 문자를 표현하는 데이터 타입
let catCharacters: [Character] = ["C", "a", "t", "!", "🐱"]
let catString = String(catCharacters)
print(catString)
// Prints "Cat!🐱"
Tuple
→ 여러 값을 하나로 그룹화한 값
→ 관련 값의 단순한 그룹에 유용
→ 복잡한 데이터 구조를 만드는 데는 적합하지 않음
→ 구조체와 비슷하며 실제 간단한 자료형을 만들 때에, 구조체 대신 튜플을 사용하기도 함
값에 접근할 때에도 [] 대신 .을 사용
var coffeeInfo = ("아메리카노", 5100)
coffeeInfo.0 // 아메리카노
coffeeInfo.1 // 5100
coffeeInfo.1 = 5100
Tuple의 파라미터에 이름을 붙일 수 있음
var namedCoffeeInfo = (coffee: "아메리카노", price: 5100)
namedCoffeeInfo.coffee // 아메리카노
namedCoffeeInfo.price // 5100
namedCoffeeInfo.price = 5100
튜플의 타입 어노테이션
var coffeeInfo: (String, Int)
var namedCoffeeInfo: (coffee: String, price: Int)
여러 변수에 값을 지정할 수도 있음
let (coffee, price) = ("아메리카노", 5100)
coffee // 아메리카노
price // 5100
튜플이 가진 값을 가지고 변수에 값을 지정할 때, 무시하고 싶은 값이 있다면 _ 키워드를 사용
- "라떼"라는 첫 번째 값을 무시
let (_, latteSize, lattePrice) = ("라떼", "Venti", 5600)
latteSize // Venti
lattePrice // 5600
튜플을 반환하는 함수
/// 커피 이름에 맞는 커피 가격 정보를 반환합니다. 일치하는 커피 이름이 없다면 `nil`을 반환합니다.
/// - parameter name: 커피 이름
/// - returns: 커피 이름과 가격 정보로 구성된 튜플을 반환합니다.
func coffeeInfo(for name: String) -> (name: String, price: Int)? {
let coffeeInfoList: [(name: String, price: Int)] = [
("아메리카노", 5100),
("라떼", 5600),
]
for coffeeInfo in coffeeInfoList {
if coffeeInfo.name == name {
return coffeeInfo
}
}
return nil
}
coffeeInfo(for: "아메리카노")?.price // 5100
coffeeInfo(for: "에스프레소")?.price // nil
let (_, lattePrice) = coffeeInfo(for: "라떼")!
lattePrice // 5600
Any
→ 다양한 데이터 타입의 값 수용
→ Any 배열을 만들면 특정 타입의 배열이 아니라 여러 타입을 담을 수 있음
→ Any 데이터 형을 대입하려면 반드시 형 변환 필요
// Any 타입의 변수에 정수, 실수, 문자열 등 어떤 값이든 할당 가능
var value: Any
value = 5
print(value) // 출력: 5
value = 3.14
print(value) // 출력: 3.14
value = "Hello, World!"
print(value) // 출력: Hello, World!
주의
var anyArray: [Any] = [1,"Hi", true]
var anyValue: Any = 1000
anyValue = "어떤 타입도 수용 가능"
anyValue = 12345.67
// 컴파일 에러
let doubleValue: Double = anyValue
// 🚨 에러 메시지: Cannot convert value of type 'Any' to specified type 'Double'
- Any 타입에 Double 값을 넣는 것은 가능하지만 Any는 Double 과 엄연히 다른 타입이 때문에
Double 타입의 값에 Any 타입의 값을 할당할 때에는 명시적으로 타입을 변환해 주어야 한다.
' 𝗔𝗣𝗣𝗟𝗘 > SWIFT : GRAMMAR' 카테고리의 다른 글
Swift 기초 문법 - 옵셔널(Optional) (2) | 2024.03.07 |
---|---|
Swift 기초 문법 - 반복문 (0) | 2024.03.07 |
Swift 기초 문법 - replacingOccurrences(of: with: ) (0) | 2024.03.07 |
Swift 기초 문법 - 객체지향 5원칙(SOLID) (0) | 2024.03.06 |
Swift 기초 문법 - 추상 클래스 (0) | 2024.03.06 |