2023년 1월 1일
08:00 AM
Buffering ...

최근 글 👑

[Swift-Study] 기초 문법종합반 1주차 1일차 정리 - 데이터 타입

2024. 3. 11. 15:12ㆍIOS/Swift-Study
SMALL

* 숫자 *

* 데이터의 종류를 표현하는 타입 *

Int

정수를 표현하는 데이터 타입

( -2,147,483,648 ~ 2,147,483,647 사이 숫자를 표현가능 )

var A : Int = 18 // Int 타입

 

 

Float

소수점을 표현하는 데이터 타입으로 32비트 부동 소수를 표현 가능

(Float의 정밀도는 소수점 이하 6자리까지 가능)

var ABC : Float = 1.2345678910 // Float 타입
print("이자율은 \(ABC) %")
// 출력값: 이자율은 1.2345679 %
Double

소수점을 표현하는 데이터 타입으로 64비트 부동소수를 표현 가능

"Double"의 정밀도는 소수점 이하 15자리 이상 가능

( 두 유형 모두 적합한 상황에서는 "Double"을 사용하는 것이 좋음 )

var ABC : Double = 1.2345678910123456789 // Double 타입
print("이자율은 \(ABC)%")
// 출력값: 이자율은 1.2345678910123457%

 


* 참 혹은 거짓 *

Bool

참 "true"와 거짓"false"을 표현할 수 있는 데이터 타입입니다.

// Bool 변수 선언 및 초기화
var A : Bool = true
var B : Bool = false

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

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

// 함수 호출
C (B: B)

 


* 문자 *

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 A: (Int, String) = (404, "Not Found")

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

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

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

// 많은 데이터를 담는 데는 적합하지 않다 - 사용하는 쪽에서 또 매핑(Mapping)을 해야 함
let myInfo: (String, Int, Int, Int, String, String) = 
(name: "peter", registrationNumber: 100000, height: 100, weight: 10, 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에서의 타입(Type)은 변수 또는 상수에 저장될 데이터의 종류를 정의

모든 변수, 상수, 함수 매개변수, 함수 반환 값 등은 모두 특정한 타입을 가지고 있음

 

Swift는 강력한 타입 추론(Type Inference)을 지원하여 코드를 작성할 때

타입을 명시적으로 지정하지 않아도 컴파일러가 타입을 유추할 수 있는 경우가 많음

 

* Swift의 타입의 2가지 *

기본 데이터 타입

(Built-in Data Types)

Swift는 기본적인 데이터 타입들을 제공

이들은 구조체로 구현되어 있으며, 각각의 타입에 해당하는 값이 메모리에 직접 저장

 

[주요 기본 데이터 타입]

Int

정수 타입 (Int8, Int16, Int32, Int64 등)

 

UInt

부호 없는 정수 타입

 

Float

단정도 부동 소수점 숫자 타입

 

Double

배정도 부동 소수점 숫자 타입

 

Bool

불리언 타입 (true 또는 false)

 

String

문자열 타입

 

Character:

단일 문자 타입

 

* 사용자 정의 데이터 타입 (Custom Data Types) *

Swift에서는 개발자가 직접 타입을 정의할 수 있는 능력을 제공

 

[ 사용자 정의 데이터 타입 ]

구조체(Structures)

멤버 변수와 메서드를 포함하는 타입

 

클래스(Classes)

객체 지향 프로그래밍을 위한 참조 타입

 

열거형(Enumerations)

관련된 값들의 그룹을 정의하는 타입

 

프로토콜(Protocols)

특정 작업 또는 기능에 대한 메서드,

속성 및 요구 사항을 정의하는 타입

 

사용자 정의 데이터 타입은 프로그램에서

특정한 목적을 위해 데이터를 묶고 구조화하는 데 사용

타입 : Swift 언어의 핵심 요소 중 하나입니다.

 

- 타입 추론 -

타입을 지정하지 않아도 컴파일러가 타입을 유추해주어 지정

(변수명 위에 option버튼 누르고 마우스 클릭하면 타입을 볼 수 있음)

더보기

컴파일러란?

소스 코드 분석

Swift 컴파일러는 코드를 읽고 문법적인 구조로 분해 하는데

이 때, 코드의 토큰(Token) 단위로 나누어짐

그리고 이 토큰들을 이용하여 코드의 구조를 이해하고

추상적인 트리 모양의 구조를 생성해요.

 

의미 분석

코드의 의미와 상호 작용을 이해하고 검증

변수 선언, 함수 호출 등이 올바르게 이루어졌는지 확인

이 과정에서 타입 체크(Type Checking)와 같은 작업이 이루어져 코드의 안정성을 확인

 

코드 최적화

코드를 실행할 때 속도를 향상시키고 메모리를 효율적으로 사용하기 위해 최적화 작업을 수행

이 최적화는 코드 실행 성능을 높이고, 실행 파일의 크기를 줄이는 데 도움

 

코드 생성

최종적으로 최적화된 코드를 목표 플랫폼(예: iOS, macOS 등)에서 실행할 수 있는 기계어로 변환

이렇게 생성된 실행 파일은 해당 플랫폼에서 실행되어 우리가 작성한 Swift 프로그램을 실행

 

Swift 컴파일러는 이러한 과정을 거쳐 우리가 작성한 코드를 실행 가능한 형태로 만들어주는 역할을 합니다.

(Swift로 작성한 프로그램을 컴퓨터에서 실행할 수 있도록 도와줌)

 

Swift 컴파일러는 Swift 프로그램을 작성한 코드를

컴퓨터가 이해할 수 있는 실행 가능한 형태로 변환해주는 프로그램 입니다.

(이 변환 과정은 크게 소스 코드를 분석 및 기계어로 번역하는 단계)

var weight = 90
type(of: weight) // Int.Type

var language = "Swift"
type(of: language) // String.Type

 

 

 

<타입 안정성>

데이터 타입을 명확하게 사용하고, 다른 타입끼리의 연산이 불가능

var integer = 5
var double = 3.1

integer = double -> 불가능
integer + double -> 불가능

 

<타입 형변환>

타입 변환이 가능

let integerString = "321"
let number = Int(integerString)

print(number) // 321

let doubleString = "321.2"
let number2 = Int(doubleString)

print(number2) // nil -> 추후 학습 예정. 값이 없음을 표현
728x90