변수와 상수

  • 메모리에 값(데이터)을 저장한다
  • 선언한 변수의 이름은 식별자이므로 한 영역에 하나의 이름만 사용한다
  • 소문자로 시작, 중간에 대문자 혹은 숫자가 들어가도 된다

변수

var age = 15
//age라는 변수를 선언하고 그 변수에 15라는 값을 저장한다

var age2 : Int
age2 = 15
//변수를 먼저 선언하여 메모리 공간을 생성하고 값을 저장할 수도 있다  

var a = 1, b = 2, c = 3
//변수를 여러 개 한꺼번에 선언 가능하다

var yourName = age
//새로운 변수를 선언하고 변수 값을 복사한다
  • String Interpolation (스트링 인터폴레이션) -> 문자열 보간법
  • 변수를 문자열처럼 출력할 경우 사용
  • "\(삽입할 변수)"
var name = "Hongildong"
var age = 55

print("my name is \(name), and my age is \(age)")
//출력 "my name is Hongildong, and my age is 55"

상수

  • 변하지 않는 데이터
    let name2 = "철수"
    name2 = "영희"
    //컴파일 에러
    

데이터 타입

데이터 타입 정리

  • 데이터 타입이 존재하는 이유

    데이터를 메모리에 얼마 만큼의 크기와 형태로 저장할 것인지 약속하는 것 -> 메모리 효율적으로 사용

  • 타입에 관한 키워드는 모두 대문자로 시작한다

    데이터 타입의 종류

Int

  • 정수형 데이터 타입 --5, -100, 0, 100 등..
  • 9223372036854775808 ~ 9223372036854775807

Float

  • 실수 타입
  • 부동소수 타입 (flating-point)
  • -3.455, -9.5433, 0, 3.567, 8.987
  • 소수점 표현 가능
  • 소수점 포함 전체 6자리 정보를 저장
  • 4 byte = 32 bit
  • 더 작은 소수들을 담을 수 있다

Double

  • 실수 타입
  • 소수점 표현 가능
  • 소수점 포함 전체 15자리 정보를 저장
  • 8 byte = 64 bit (Float의 두배)

Character

  • 하나의 문자 저장
  • 공백 문자를 담을 수 없다
  • "A", "b", "글", " " 등..

    String

  • 문자열을 저장
  • "Abcd", "b", "글자열", "" 등..

Bool

  • true 혹은 false값 저장

기타

  • UInt, UInt64, Int32..

타입 주석

(Type Annotation)

  • 변수를 선언하면서 타입도 명확하게 지정해주는 방식
var num : Int = 5
//정식 문법 -> 데이터 타입을 기입해준다

var num2 : Int // 변수를 선언, 타입 선언 *메모리 공간 생성
num2 = 100 // 값을 저장 (초기화)   

타입 추론

(Type Inference)

  • 타입을 지정하지 않아도 컴파일러가 타입을 유추하여 알아서 알맞는 타입으로 저장하는 방식
var one = 1
var two = "2"
var three = 3.0
print(type(of: one))
//Int 출력

타입 안정성

(Type Safety)

  • 스위프트는 데이터 타입을 엄격하게 분리하여 사용한다

    다른 데이터 타입끼리 계산할 수 없다

let num = 9
let double = 12.4

num = 33.6
//메모리 공간의 크기가 달라 호환되지 않음 -> 컴파일 에러

print(num + double)
//컴파일 에러

타입(형) 변환

(Type Conversion)

  • 바꿀 타입(변환하려는 변수)
  • 데이터 타입 변환에 실패하거나 데이터가 유실될 수 있다는 점 주의

    타입 변환에 실패했을 경우에는 nil값 return

let str = "123"
let num = Int(str)

print(num)
//Optional(123) 출력

let str1 = "123.4"
let num1 = Int(str1)
print(num1)
//nil 출력

let double = 123.45
let num2 = Int(double)
print(num2)
//123출력
//소수점 버림

타입애일리어스

(Type Alias)

  • 기존에 선언되어있는 타입이나 내가 만든 타입에서 새로운 별칭을 붙여 코드 가독성을 높이는 문법
  • 치환과 유사
  • 어떤 형태든 치환이 가능
  • 코드가 짧아져 문법이 간단해짐
typealias Name = String
let name : Name = "leesumin"
//Name 타입은 String타입과 동일

typealias Something = (Int) -> String

func someFunction(completionHandler : (Int) -> String) {
    //~~
}

func someFunction2(completionHandler : Something) {
    //~~
}