변수 : 프로그램 데이터를 저장할 수 있는 공간
키워드 var
를 앞에 붙인 후 원하는 변수명에 값을 저장한다.
var address = "321 Park Lane"
Swift에 변수가 있는 이유?
var favoriteShow = "Orange is the New Black"
favoriteShow = "The Good Place"
favoriteShow = "Doctor Who"
만약 변수가 없다면 매번 값을 변경할 때마다 새로운 값을 저장해야 할 것입니다.
변수가 있다면 값을 한번 저장 한후 그값을 변경하고 싶을 때 값만 변경하면 되기 때문에 편리합니다.
스위프트는 type-safe
언어로 알려져있습니다. 모든 변수는 구체적인 타입을 가져야 합니다.
문자열을 사용하고 싶다면 String
, 숫자를 사용하고 싶다면 Int
값이 큰 숫자를 사용하고 싶다면 숫자사이에 천단위로 _
구분자를 추가합니다. 숫자는 변경되지 않고 읽기가 쉽습니다.
var largeNum = 9_000_000
스위프트가
type-safe
언어 인 이유?
스위프트는 여러가지 타입을 만들 수 있습니다. 변수를 생설할 때 할당한 값의 종류에 따라 타입을 파악하고 변수는 파악한 타입을 채택합니다.
그런데 채택한 타입과 다른 값을 저장하면 에러가 발생합니다. 이는 실수를 하지 않도록 보장하기 때문입니다.
var meaningOfLife = 42 // 42라는 값의 종류를 파악하여 Int타입채택
meaningOfLife = "Forty two" // 정수타입에 문자열 저장하면 에러 발생
표준 Swift문자열은 큰 따옴표를 사용하지만 여기에 줄 바꿈을 포함 할 수 없습니다.
줄 바꿈을 위해서는 """
세 개의 큰따옴표를 시작과 끝을 표현합니다.
var str1 = """
This goes
over multiple
lines
"""
코드 형식을 깔끔하게 하기 위해서는 코드 줄 바꿈을 원하지 않는 경우 \
백슬래시를 추가해줍니다.
var str2 = """
This goes \
over multiple \
lines
"""
var coleridge = """
Water, water, everywhere
and not a drop to drink""" // 에러 발생 시작과 끝에 """를 구분시켜줘야 합니다
스위프트는 왜 multi-line strings 가 필요한 가?
Swift는 문자열의 줄 바꿈을 텍스트 자체의 일부로 간주하므로 문자열에 실제로 세 줄이 포함됩니다.
또한 코드에서 문자열을 읽기가 편해집니다.
왜 Double과 Boolean이 필요할 까?
스위프트는 숫자를 저장하는 여러가지 방법을 제공합니다.
하지만 정수와 소수를 구분하지 않고 사용하다가 소수의 값을 잃을 경우를 조심해야합니다.
var myInt = 1
var myDouble = 1.0
코드에서 두가지 변수 모두 1을 표현하지만 둘을 더할 경우 에러가 발생합니다. 두가지 변수는 각각 다른 타입이기 때문입니다.
문자열에 변수값을 입력하고 싶은 경우 스위프트에는 문자열 보간법이라는 기능이 있습니다.
문자열 안에 모든 유형의 변수를 넣을 수 있습니다 \
백슬래시를 작성하고 괄호 안에 변수를 입력하기만 하면 됩니다.
var score = 85
var str = "Your score was \(score)"
var results = "The test results are here: \(str)"
문자열 보간법이 있는 이유?
우리는 문자열에 정적인 정보만 표시하기를 원하지 않기 때문에 문자열 보간법을 사용하면 매번 변하는 데이터값을 보여줄 수 있습니다.
변수는 값은 매번 변경될 수 있지만 그러나 값을 한 번 설정하고 절대 변경하지를 원하지 않는 경우 상수를 사용합니다.
상수를 사용하기 위해서는 let
키워드를 사용합니다. 한 번 설정된 값을 절대 변경될 수 없고 변경하려고 시도하면 에러가 발생합니다.
값을 변경하지 않는 경우 스위프트는 상수를 권장합니다.
상수가 필요한이유?
값이 변경되지 않아야 되는 경우 실수로 값을 변경하려는 시도를 방지해줄 수 있습니다.
스위프트는 주어진 값에 따라 변수와 상수에 타입을 할당합니다. 이것을 타입추론이라고 합니다.
하지만 직접 타입을 명시하는 것을 타입유형이라고 합니다.
let album: String = "Reputation"
let year: Int = 1989
let height: Double = 1.78
let taylorRocks: Bool = true
타입 유형이 필요한 이유
타입추론을 사용하면 좋은 점