[Swift] 데이터 타입, 상수, 변수

beeeen:D·2023년 8월 5일
0

Swift

목록 보기
2/3

📖 핵심만 골라 배우는 SwiftUI 기반의 iOS 프로그래밍




1. 정수형 타입

: 소수점 이하 자리가 없는 수 즉, 정수를 저장하기 위해 사용

  • unsigned : 양수와 0 값만 저장하는 부호없는 정수
  • signed : 양수, 음수, 0 값을 저장할 수 있는 부호있는 정수

Int8, Int 16, Int32, Int 64
UInt8, UInt16, UInt 32, UInt 64

와 같은 데이터 타입 있음

  • 일반적으로 애플은 특정 크기의 데이터 타입보다는 Int 데이터 타입 사용을 권장함.
    • Int 타입은 코드가 실행되는 플랫폼에 맞는 정수 크기를 사용하게 된다.

모든 정수형 타입은 해당 데이터 타입이 지원하는 최댓값과 최솟값을 알 수 있도록 범위 속성을 가지고 있다.

Int32.min
Int32.max



2. 부동소수점 데이터 타입

: 소수점이 있는 값을 저장할 수 있는 데이터 타입

저장될 값의 크기와 소수점 이하의 값을 얼마나 정확하게 표현해야 하느냐에 따라 사용

  • Float : 최대 32비트의 부동소수점 수를 저장하기 위해 사용. 적어도 6자리까지 표현
  • Double : 최대 64비트의 부동소수점 수를 저장하기 위해 사용. 실행 플랫폼에 따라 적어도 15자리까지 표현


3. 불리언 데이터 타입

: 참/거짓(또는 1과 0)을 처리하는 목적의 데이터 타입

  • true
  • false



4. 문자 데이터 타입

: 문자, 숫자, 문장 부호, 기호와 같은 하나의 문자를 저장하는 데이터 타입

그래핌 클러스터(grapheme cluster) 형태로 저장된다.

  • grapheme cluster?
    눈에 보이는 하나의 문자를 표현하기 위해 결합된 둘 이상의 유니코드 스칼라로 구성된다.
var myChar = “\u{0058}

유니코드를 이용하여 변수에 문자를 할당할 수 있다.



5. 문자열 데이터 타입

: 단어나 문장을 구성하는 일련의 문자를 담는 데이터 타입

저장 메커니즘, 문자열 검색, 매칭, 연결, 수정 등의 다양한 문자열 편집 기능 제공

문자열 보간 (String Interpolation)
: 변수, 상수, 표현식, 함수 호출을 조합하여 구성할 수 있다.

var hello: String = "HELLO"
var name: String = "ybeeeen"

print("\(hello), \(name)!")



6. 특수 문자/이스케이프 시퀀스

기본적으로 역슬래시( \ )가 앞에 붙은 문자는 특수 문자로 간주되어 처리된다.

\n // 개행
\r // 캐리지 리턴
\t // 탭
\\ // 역슬래시
\” // 쌍따옴표
\’ // 홑따옴표

\u{nn} // 한 바이트 유니코드 스칼라
       // nn은 유니코드 문자를 표현하는 두 개의 16진수
       
\u{nnn} // 두 바이트 유니코드 스칼라
        // nnn은 유니코드 문자를 표현하는 네 개의16진수
        
\u{nnnnnnnn} // 네 바이트 유니코드 스칼라
             // nnnnnnnn은 유니코드 문자를 표현하는 여덟 개의 16진수



7. 스위프트 변수

변수 Variable

  • 애플리케이션이 사용하는 데이터를 저장하기 위해 예약된 컴퓨터 메모리 내의 위치
  • 프로그래머에 의해 이름이 주어지고 값이 할당된다.
  • 변수에 할당된 값을 스위프트 코드 내에서 접근하기 위해 변수 이름 사용
  • 할당된 값 변경 가능



8. 스위프트 상수

상수 Constant

  • 변수처럼 데이터 값을 저장하기 위해 메모리 내의 위치에 이름 명명
  • 변수와 달리 값이 한 번 할당되면 나중에 그 값을 바꾸지 못한다. (⭐️)
  • 코드 내에서 반복적으로 사용되는 값이 있을 때 유용하다.


9. 상수와 변수 선언하기

변수 - var
상수 - let

 애플은 코드의 효율성과 실행 성능의 향상을 위해서 가능하면 변수보다 상수 사용을 권장한다.
let sayHello: String = "Hello"
var name: String = "ybeeeen"

print("\(sayHello), \(name)") // Hello, ybeeeen

// sayHello = "Hi" // 불가능
name = "yubeen"

print("\(sayHello), \(name)") // Hello, yubeen



10. 타입 선언과 타입 추론

  • Type Safe - 데이터 타입이 안전한. (Swift)
  • Loosely Typed - 데이터 타입이 느슨한. (JavaScript)

Type Safe 언어는 변수의 데이터 타입이 한번 정해지면 다른 타입의 데이터를 담을 수 없다.
Loosely Typed 언어는 변수 선언 후에 다른 데이터 타입을 저장할 수 있다.

  • 타입 선언 Type annotation
    : 변수나 상수를 선언할 때 이름 뒤에 콜론을 쓰고 타입을 선언하는 것
var userCount: Int = 10

  • 타입 추론 Type inference
    : 타입 선언이 없다면 스위프트 컴파일러가 타입 추론을 수행한다.
    초기화되는 시점에 할당된 값의 타입이 무엇인지를 판단하여 해당 타입으로 지정한다.
var signalStrength = 2.231
let companyName =My Company

signalStrength는 Double 타입으로,
companyName은 String 타입으로 추론된다.

타입 선언 없이 상수를 선언할 경우에, 반드시 선언 시점에서 값을 할당해야 한다.
하지만 타입 선언을 할 경우에는 나중에 값을 할당해도 된다.


11. 스위프트 튜플

: 여러 값을 하나의 항목으로 임시적으로 그룹핑하는 매우 간단한 방법.
서로 다른 값들이 튜플에 저장될 수 있다.

let myTuple = (10, 432.123,This is a String)

튜플에 저장된 값을 얻는 방법

  1. 인덱스 위치 참조
myTuple.1

  1. 값 추출 후 할당
    : 튜플에 있는 모든 값을 추출하여 변수나 상수에 각각 할당
let (myInt, myDouble, myString) = myTuple

선택적 추출도 가능

var (myInt, _, myString) = myTuple

  1. 튜플 생성 시점에 각각의 값을 변수에 할당
let myTuple = (count: 10, length: 432.123, message:This is a String)
myTuple.message
앱에서 주로 함수에서 리턴값으로 여러 개를 묶어보낼 때 튜플 사용



12. 스위프트 옵셔널 타입

옵셔널 데이터 타입은 대부분 다른 프로그래밍 언어에 없는 새로운 개념.

  • 목적
    : 변수 또는 상수에 값이 할당되지 앟은 상황을 처리하기 위해 안전하고 일관된 접근 방식을 제공하는 것.

  • 옵셔널 선언
    : 변수를 선언할 때 데이터 타입 선언 다음에 “?” 문자를 두어 옵셔널로 선언

var index: Int?

index 변수에는 정숫값이 할당되거나 아무런 값도 할당되지 않을 수 있다.
값이 할당되지 않은 옵셔널인 경우 실제로 nil 값을 가짐.

  • 옵셔널 값 유무 식별
var index: Int

if index != nill {
	// 값 할당 o 
} else {
	// 값 할당 x
}

옵셔널에 값이 할당되어 있다면 ‘래핑되었다(wrapped)’라고 말한다.

  • 옵셔널 값 사용
    : 옵셔널 안에 래핑된 값을 사용할 때는 강제 언래핑(forced unwrapping) 개념을 이용한다.

  • 강제 언래핑
    : 래핑된 옵셔널 이름 뒤에 느낌표를 두면 강제로 값을 추출하여 사용할 수 있다.

var index: Int

index = 3
var treeArray = [Oak,Pine,Yew,Birch]

if index != nil {
	print(“treeArray[index!])
} else {
	print(“index does not contain a value”)
}
  • 옵셔널 바인딩 Optional Binding
    : 강제 언래핑 대신, 옵셔널로 할당된 값을 사용하는 또 다른 방법
    옵셔널 바인딩을 이용하여 임시 변수나 상수에 값을 할당할 수 있다.
if let constantname = optionalName {

}

if var variablename = optionalName {

}

위 코드는 두 가지 작업을 수행한다.

  1. 지정된 옵셔널이 값을 가지고 있는지 확인
  2. 옵셔널 변수가 값을 가지고 있는 경우에 선언된 상수 또는 변수에 그 값을 할당하고 코드 실행
var index: Int?

index = 3

var treeArray = [Oak,Pine,Yew,Birch]

if let myValue = index {
print(treeArray[myValue])
} else {
	print(“index does not contain a value”)
}
profile
Appel Developer Academy @ Postech | iOS developer 👩🏻‍💻

0개의 댓글