iOS프로그래밍기초(Smile Han)/문법 정리

[Swift] 문법 정리 - 데이터 타입(자료형), 상수(let), 변수(var), 튜플(Tuple)

wse46 2024. 9. 14. 21:23
https://youtu.be/R8OWOgCNt4M?si=bldau6gYEZ3seGj2

위 영상을 보고 정리한 글입니다. (4:39 ~ 6:47)

 

# 데이터 타입 (자료형, data type)
 
1. mynumber 라는 이름의 변수를 생성 후 숫자 10을 할당

var mynunber = 10

 
2. 아래와 같이 초깃값이 있을 경우에는 컴파일러가 타입 추론(type inference)을 하므로 데이터 타입을 명시할 필요 없음

var myNumber : Int = 46
var myWeight : Double = 55.5
var orangesAreOrange : Bool = true
var userName : String = "Cho"

 
3. '=' 양쪽의 공백이 같아야 함.

x= 10 // error '='  must have consistent whitespace on both sided

 
 
 
정수 데이터 타입 : Int

  • 정수를 저장하는 데 사용
  • \(출력하고 싶은 변수나 상수)
print("Int32 Min = \(int32.min) Int32 Max = \(Int32.max)")
// Int32 Min = -2146473648 Int32 Max = 2146473647

 
 
 
부동 소수점 데이터 타입 : Double

  • 소수점이 있는 숫자
  • Double 타입 : 64bit로 부동 소수점 수를 저장, 소수점 15자리 정확도
  • Float 타입 : 32bit로 부동 소수점 수를 저장, 소수점 6자리 정확도
  • Double형이 기본

 
 
부울 데이터 타입 : Bool

  • 참 또는 거짓(1 또는 0) 조건을 처리할 데이터 타입
  • Boolen 데이터 타입을 처리하기 위하여 두 개의 불리언 상수값(true/false) 사용

 
 
문자 데이터 타입 : Character

  • 문자, 숫자, 문장 부호, 심볼 같은 유니코드(Unicode) 문자 하나를 저장
    Swift에서 문자들은 유니코드 코드 값들로 이루어진 문자소 묶음(grapheme cluster)의 형태로 저장
  • var 변수명 : Character = "초깃값"
  • 주의 : 초깃값을 작은 따옴표가 아니고 큰 따옴표
  • Swift에서는 Character형과 String형 모두 큰 따옴표로 표현하기 때문에 문자 데이터 타입(Character형)을 표현할 때는 ' : Character ' 로 데이터 타입을 명시해줘야 함. 그렇지 않으면 기본적으로 String형으로 인식함.
var myChar1 : Character
var myChar2 : Character = ":"
var myChar3 : Character = "X"
print(type(of : myChar3) // myChar3의 데이터 타입은 Character형
var myChar4 = "X"
print(type(of : myChar4) // myChar4의 데이터 타입은 String형

 
 
 
문자열 데이터 타입 : String

  • 단어나 문장을 구성하는 일련의 문자
  • 저장, 검색, 비교, 문자열 연결, 수정 등의 기능을 포함
  • 문자열 보간(string interpolation)을 사용하여 문자열과 변수, 상수, 표현식, 함수 호출의 조합을 만들 수도 있음
var userName : String = "Cho" // : String 생략하는 것이 일반적임
var inboxCount = 97
let maxCount = 100
var message = "\(userName) has \(inboxCount) message. Message capacity remaining is \(maxCount - inboxCount)"
print(message) // Cho has 97 massage. Message capacity remaining is 3

 
 
 
특수 문자 / 이스케이프 시퀀스 (escape sequence)

  • 표준 문자 세트뿐만 아니라 문자열에 개행, 탭, 또는 유니코드 값과 같은 항목을 지정할 수 있는 여러 특수 문자도 있음
  • 특수 문자들은 역슬래시를 접두어로 하여 구별
  • 역슬래시로 시작되는 모든 문자는 특수 문자로 간주
  • 역슬래시 문자 자체를 표현할 때는 두 개의 역슬래시를 연속으로 사용
var backslash = "\\"
  • 일반적으로 많이 사용되는 특수 문자
\n 개행
\r 캐리지 리턴(carriage return)
\t 수평 탭
\\ 역슬래시
\" 큰 따옴표(문자열 선언부에 큰 따옴표를 쓰고 싶을 경우에 사용됨)
\' 작은 따옴표(문자열 선언부에 작은 따옴표를 쓰고 싶을 경우에 사용됨)
\u{nn} nn 위치에 유니코드 문자를 표현하는 두 개의 16진수가 배치되는 1byte 유니코드 스칼라
\u{nnnn} nnnn 위치에 유니코드 문자를 표현하는 네 개의 16진수가 배치되는 2byte 유니코드 스칼라
\U{nnnnnnnn} nnnnnnnn 위치에 유니코드 문자를 표현하는 여덟 개의 16진수가 배치되는 4byte 유니코드 스칼 

 


 
# 변수 : var

  • 기본적으로 변수(variable)는 프로그램에서 사용될 데이터를 저장하기 위한 메모리 공간
  • 변수에 할당된 값은 변경 가능
var myVariable = 10 // : Int
var x = 0.0, y = 0.0, z = 0.0

 
# 상수 : let

  • 상수(constant)는 데이터 값을 저장하기 위하여 메모리 내의 명명된 공간을 제공한다는 점에서 변수와 비슷
  • 어떤 값이 한 번 할당되면 이후에 변경될 수 없음
  • 상수는 코드 내에서 반복적으로 사영되는 값이 있을 경우에 유용
  • 코드 내에서 반복적으로 사용되는 특정 값을 매번 사용하는 것보다, 그 값을 상수에 할당한 다음 코드 내에서 참조하면 코드 읽기가 더 쉬워짐
let maximumNumber = 10
let π = 3.14159
let 🐶🐮 = "dogcow"  //[Edit]-[Emoji & Symbols]
  • 변수나 상수명은 영문자, 숫자, Unicode(이모티콘, 중국어, 한글 등)도 가능
  • 애플은 코드의 효율성과 실행 성능을 높이기 위해서 변수(var)보다는 상수(let)을 사용하라고 권장

 
상수와 변수의 타입을 식별하는 방법
 
1. 변수 또는 상수가 코드 내에서 선언되는 시점에 타입 어노테이션(type annotation) 사용

  • 변수 또는 상수 이름 다음에 타입 선언을 두면 됨
  • Int 타입의 userCount라는 이름의 변수를 선언
    var userCount : Int = 10 // ' : Int'가 type annotation

2. 선언부에 타입 어노테이션이 없으면 Swift Compiler는 상수 또는 변수의 타입을 식별하기 위하여 타입 추론(typer inference) 사용

  • 해당 상수 또는 변수에 값이 할당되는 시점에서 그 값의 타입을 확인하고 그와 같은 타입처럼 사용
  • x라는 변수를 Double 타입, companyName이라는 상수를 String 타입으로 간주
    Swift의 타입 추론에서 모든 부동 소수점 수는 Double 타입
    var x = 2.231 // var x : Double = 2.231
    let companyName = "Apple"

 
상수의 값 할당
상수를 선언할 때도 타입 어노테이션을 사용해 나중에 코드에서 값을 할당할 수 있음

let bookTitle : String 
// bookTitle이라는 상수의 초기값이 없기 때문에 나중에 반드시 값을 할당해야 함
 var book = true
 if book {
 	bookTitle = "iOS"
 } else {
 	bookTitle = "Android"
 }
// book 변수가 true일 경우 bookTitle에 "iOS"를 할당, 그렇지 않을 경우 "Android"를 할당
 print(bookTitle) // "iOS" 출력
  • 상수에는 값을 한 번만 할당할 수 있음
  • 이미 값이 할당된 상수에 다시 값을 할당하려고 시도하면 에러 발생

 


 
# 튜플 (Tuple)

  • Swift 프로그래밍 언어에서 가장 강력한 기능 중 하나
  • 여러 값을 하나의 개체에 일시적으로 묶는 방법
  • 튜플에 저장되는 항목들은 어떠한 타입도 될 수 있으며, 저장된 값들이 모두 동일한 타입이어야 한다는 제약도 없음
  • 튜플의 요소들은 여러 다른 방법들을 사용하여 접근할 수 있음
  • 특정 튜플 값은 인덱스 위치를 참조하면 간단하게 접근
    맨 첫 번째 값은 인덱스 0
  • 인덱스 2 위치를 추출하고 그 값을 새로운 문자열 변수에 할당
    let myTuple = (10, 12.1, "Hi")
    var myString = myTuple.2 // myTuple의 인덱스 2 위치는 "Hi"
    print(myString) // "Hi" 출력
     
  • 단 한 줄의 코드로 튜플의 모든 값을 추출하여 변수 또는 상수에 할당
    let myTube = (10, 12.1, "Hi")
    let (myInt, myFloat, myString) = myTuple

  • 튜플의 값을 선택적으로 추출하는 데 사용될 수 있으며, 무시하고 싶은 값에 밑줄을 사용하면 그 값은 무시
  • 튜플을 생성할 때 각 값에 이름을 할당할 수도 있음
  • 튜플에 저장된 값에 할당된 이름은 각 값을 참조하는 데 사용
  • myTuple 인스턴스의 message 값을 출력하는 코드
    let myTuple = (count: 10, length: 12.1, message: "Hi")
    print(myTuple.message) // "Hi" 출력
  • 튜플의 가장 강력한 점은 함수에서 여러 값들을 한 번에 반환하는 것