본문 바로가기

SWIFT 공식문서 문법 알아보기/01.The Basics

Swift 공식문서 해설 The Basics - Constants and Variables (1-2)

상수와 변수 (Constants and Variables)

변수와 상수는 (maximumNumberOfLoginAttempts or welcomeMessage) 위와 같은 이름이나 특정한 값 (10 or the string "Hello")의 결합입니다.

상수는 한번 설정되면 바뀔 수 없지만 변수는 다양하게 변화할 수 있습니다

상수와 변수 선언 (Declaring Constants and Variables)

상수와 변수는 반드시 사용하기 전에 선언을 해야 합니다.

상수를 선언하기 위해서는 let이라는 키워드를 사용하고 변수를 사용하기 위해서는 var이라는 키워드를 사용합니다.

 

*부연설명

상수 선언의 형태 : let + 상수명

변수 선언의 형태 :  var + 변수명

 

ex)  var number = 100

 

위의 예시에서 number라는 변수 안에 100이라는 값을 넣었습니다. 이처럼 선언된 변수에 값을 처음 대입하는 과정을 초기화라고 합니다. 초기화 과정에서 swift는 타입 추론을 통해 알맞은 자료 유형을 선택하게 되는데 이는 뒷부분에 자세히 나옵니다.

 

var number       - 변수 선언 
number = 100   - 번수 초기화

 

위와 같이 변수 선언과 초기화를 나눌 수도 있습니다

아래 예는 로그인 시도를 한 횟수를 이용한 예입니다.

 

let maximumNumberOfLoginAttempts = 10 
var currentLoginAttempt = 0

 

maximumNumberOfLoginAttempts는 10이라는 값을 주고 상수로 선언했고, currentLoginAttempt는 0이라는 값을 주고 변수로 선언했습니다.

maximumNumberOfLoginAttempts(사이트에 최대 로그인할 수 있는 횟수)는 절대 변하지 않는 값이기에 상수로 선언했고, The current login attempt(현재 사이트에 로그인한 횟수)는 늘어날 수 있는 값이기 때문에 변수를 사용했습니다.

상수와 변수는 다수의 변수와 상수를 선언할 수 도 있습니다.

콤마를 이용해 다수의 변수나 상수를 선언할 수 있습니다.

 

var x = 0.0, y = 0.0, z = 0.0

 

핵심!

변경할 필요가 없는 값은 let을 이용하여 상수로, 변경할 필요가 있는 값은 var을 이용하여 변수를 사용하자!

타입 어노테이션 (Type Annotations)

상수나 변수를 선언할 때 저장되는 값을 명확하게 하기 위해서 상수나 변수의 이름 뒤에 콜론을 쓴 후 한 칸을 띄우고 타입의 종류를 적는 것입니다.

 

var welcomeMessage: String

 

예를 들어 welcomeMessage라고 불리는 변수에 String이라는 문자열이 저장된다는 것을 표기하기 위해 타입을 명시했습니다. 

 

*부연설명

- 자료 유형

 

자료

자료 유형

정수

소수점 X

Int

실수

소수점 O

Float, Double

문자

"a" , "b", "1", "10"

Character

문자열

"water" , "i'm happy"

String

정수는 0, 1, -10과 같은 정수 숫자

실수는 0.125, 0.548과 같은 소수점 숫자 (float, double의 차이는 뒤에서)

문자는 "a" , "b", "1", "10"과 한 개의 같은 문자 > 여기서 1, 10은 숫자가 아닌 문자로 해석 ("숫자" "가 양 끝에 붙으면 문자로 해석)

문자열은 "water" , "i'm happy"와 같은 단어나 문장

 

var welcomeMessage: String

 

콜론은 ~의 타입이라는 말로 읽을 수 있습니다.

위 예시와 같이 String 타입의 변수 welcomeMessage를 선언합니다라고 할 수 있습니다.

String 타입이라는 말은 어떤 String 값(어떠한 문자열도) 저장이 가능하다는 말입니다.

 

welcomeMessage = "Hello"

 

이제 welcomeMessage라는 변수에는 어떠한 문자열 값이든 저장이 가능합니다

(참고로 문자열은 "문자열 내용" 이런 식으로  "가 처음과 끝에 붙어져야 합니다)

 

var red, green, blue: Double

 

다수의 관련된 변수 타입을 한 줄에 저장할 수 있습니다

 

타입 명시를 하는 경우는 드뭅니다. 만약 상수와 변수에 초기화와 정의를 같이 한다면 swift는 상수와 변수에 사용될 타입을 추측합니다. 이러한 시스템을 타입세이프, 타입 추론(Type Safety, Type Inference)라고 합니다. 예제의 경우 welcomeMessage에 초기값을 지정하지 않았기 때문에 타입을 추정하기 어려워 타입을 명시해준 것입니다.

상수와 변수의 이름 짓기 (Naming Constants and Variables)

상수와 변수는 유니코드를 포함한 어떤 문자도 이름을 지을 수 있습니다

 

let π = 3.14159
let 你好 = "你好世界"
let 🐶🐮 = "dogcow"

 

상수와 변수 공백, 수학 기호, 화살표, 개인용 유니코드, 선, 박스, 그린 캐릭터 등은 이름 지을 수 없으며 숫자는 이름의 다른 곳에 포함될 수 있지만 숫자로 시작할 수는 없습니다. 

 

*부연설명

연산자(+,-,*,/), 공백, 스위프트에서 특별한 의미를 지니는 단어들(class, as, enum 등) 또한 사용할 수 없습니다.

 

한번 상수와 변수를 선언하면 같은 이름, 다른 타입의 값으로 저장할 수 없습니다. 또한 변수에서 상수로 저장하거나 상수에서 변수로 저장할 수는 없습니다. 

스위프트 키워드를 상수, 변수 명에 사용하고 싶다면 '''을 이용하여 할 수 있습니다. 자세한 내용은 나중을 참조해주세요

 

기존 변수와 같은 타입의 값은 언제든지 변경이 가능합니다 

아래의 예와 같이 friendlyWelcome이 문자열이기 때문에 "Hello!"를 대신해서 "Bonjour!"가 들어가도 문제가 없습니다.

 

var friendlyWelcome = "Hello!"
friendlyWelcome = "Bonjour!"
// friendlyWelcome is now "Bonjour!"

 

하지만 반대로 상수는 같은 타입의 값이라도 변경할 수가 없습니다. 컴파일할 때 오류가 발생됩니다.

 

let languageName = "Swift"
languageName = "Swift++"
// This is a compile-time error: languageName cannot be changed.