dev._.note

[Swift] 데이터 타입 본문

Dev/SWIFT

[Swift] 데이터 타입

Laena 2023. 11. 28. 15:11

📌 숫자

 Int

  • 정수를 표현하는 데이터 타입으로 -2,147,483,648 ~ 2,147,483,647 사이 숫자를 표현.
var age: Int = 18 // Int 타입

Float

  • 소수점을 표현하는 데이터 타입으로 32비트 부동 소수를 표현.
  • 소수점 이하 6자리까지 가능.
var interestRate: Float = 1.2345678910 // Float 타입
print("이자율은 \\(interestRate) % 입니다")
// 출력값: 이자율은 1.2345679 % 입니다

Double

  • 소수점을 표현하는 데이터 타입으로 64비트 부동소수를 표현할 수 있음.
  • 소수점 이하 15자리 이상 가능.
  • 두 유형 모두 적합한 상황에서는 Double을 사용하는 것이 좋음. (출처: 공식 문서)
  • 예시 코드
var interestRate: Double = 1.2345678910123456789 // Double 타입
print("이자율은 \\(interestRate) % 입니다")
// 출력값: 이자율은 1.2345678910123457 % 입니다

 

📌 참 혹은 거짓

Bool

  • 참 true와 거짓 false 을 표현할 수 있는 데이터 타입.
// Bool 변수 선언 및 초기화
var isOpen: Bool = true
var isLogged: Bool = false

// 조건문에서 Bool 값 사용
if isOpen {
    print("문이 열려 있습니다.")
} else {
    print("문이 닫혀 있습니다.")
}

// Bool 값을 반환하는 함수
func checkLoginStatus(isLogged: Bool) {
    if isLogged {
        print("로그인되었습니다.")
    } else {
        print("로그인되지 않았습니다.")
    }
}

// 함수 호출
checkLoginStatus(isLogged: isLogged)

 

📌 문자

String

  • 문자열을 표현하는 데이터 타입으로 텍스트를 표현.
var emptyString: String = "" 
var anotherEmptyString = String()  

var variableString = "Mom"
variableString += " and Dad"
print(variableString)
// 출력값: "Mom and Dad"

Character

  • 하나의 문자를 표현하는 데이터 타입.
let catCharacters: [Character] = ["C", "a", "t", "!", "🐱"]
let catString = String(catCharacters)
print(catString)
// Prints "Cat!🐱"

 

📌 다양한 값의 묶음

Tuple

  • 튜플은 여러 값을 하나로 그룹화한 값.
  • Tuple은 관련 값의 단순한 그룹에 유용. 복잡한 데이터 구조를 만드는 데는 적합하지 않음.
let http404Error: (Int, String) = (404, "Not Found")

let (justTheStatusCode, _): (Int, String) = http404Error
print("The status code is \\(justTheStatusCode)")
// 출력값: "The status code is 404"

// 튜플 값에 접근하려면 순서를 알고 있어야 합니다.
print("The status code is \\(http404Error.0)")
// 출력값: "The status code is 404"
print("The status message is \\(http404Error.1)")
// 출력값: "The status message is Not Found"

// 각 엘레먼트에 이름을 붙일 수 있습니다.
let http200Status: (Int, String) = (statusCode: 200, description: "OK")

// 많은 데이터를 담는 데는 적합하지 않다 - 사용하는 쪽에서 또 매핑(Mapping)을 해야 함
let myInfo: (String, Int, Int, Int, String, String) = 
(name: "peter", registrationNumber: 970212, height: 185, weight: 75, job: "developer", hobby: "soccer")

 

📌 모든 타입

Any

  • Any는 다양한 데이터 타입의 값을 수용가능.
  • Any 배열을 만들면 특정 타입의 배열이 아니라 여러 타입을 담을 수 있음.
  • 하지만 Any 데이터 형을 대입하려면 반드시 형 변환이 필요.
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에서의 타입

Swift에서의 타입(Type)은 변수 또는 상수에 저장될 데이터의 종류를 정의하는 것.
모든 변수, 상수, 함수 매개변수, 함수 반환 값 등은 모두 특정한 타입을 가지고 있음. Swift는 강력한 타입 추론(Type Inference)을 지원하여 코드를 작성할 때 타입을 명시적으로 지정하지 않아도 컴파일러가 타입을 유추할 수 있는 경우가 많음.

1. 기본 데이터 타입 (Built-in Data Types):

Swift는 기본적인 데이터 타입들을 제공. 이들은 구조체로 구현되어 있으며, 각각의 타입에 해당하는 값이 메모리에 직접 저장. 주요한 기본 데이터 타입에는 다음과 같은 것들이 있음 :

  • Int: 정수 타입 (Int8, Int16, Int32, Int64 등)
  • UInt: 부호 없는 정수 타입
  • Float: 단정도 부동 소수점 숫자 타입
  • Double: 배정도 부동 소수점 숫자 타입
  • Bool: 불리언 타입 (true 또는 false)
  • String: 문자열 타입
  • Character: 단일 문자 타입
  • 그 외 다양한 기본 데이터 타입들이 있습니다.

2. 사용자 정의 데이터 타입 (Custom Data Types):

Swift에서는 개발자가 직접 타입을 정의할 수 있는 능력을 제공. 이러한 사용자 정의 데이터 타입에는 다음과 같은 것들이 있음 :

  • 구조체(Structures): 멤버 변수와 메서드를 포함하는 타입
  • 클래스(Classes): 객체 지향 프로그래밍을 위한 참조 타입
  • 열거형(Enumerations): 관련된 값들의 그룹을 정의하는 타입
  • 프로토콜(Protocols): 특정 작업 또는 기능에 대한 메서드, 속성 및 요구 사항을 정의하는 타입

사용자 정의 데이터 타입은 프로그램에서 특정한 목적을 위해 데이터를 묶고 구조화하는 데 사용. 이러한 타입들을 사용하여 코드를 조직화하고 데이터 모델을 만들어 유연하고 확장 가능한 앱을 개발하는 데 도움이 됨. 타입은 Swift 언어의 핵심 요소 중 하나이며, 안정성과 코드의 가독성을 높이는 데 중요한 역할.

'Dev > SWIFT' 카테고리의 다른 글

[Swift] Queue와 Stack  (0) 2023.11.29
[Swift] 연산자, 조건문과 반복문  (1) 2023.11.28
[Swift] 프로퍼티와 출력, 함수  (1) 2023.11.27
[Swift] Playground  (0) 2023.11.27
[Swift] Swift / iOS 공식자료  (1) 2023.11.26