변수와 상수
변수란? 프로그램에서 데이터의 저장공간을 담당한다.
변수와 상수의 차이는? 변수와 상수는 값을 저장할 수 있는 공통점이 있지만 상수는 처음 저장된 값을 변경할 수 없다.
반면 변수는 언제든지 저장된 값을 변경할 수 있다. 그러나 변수라고 하여 아무 값이나 마음대로 변경할 수 있는 것은 아니다. 처음 저장된 값이 정수형이면 이후에도 정수형, 문자열이라면 이후에도 문자열로만 변경이 가능하다. 프로그래밍 소스 관리 목적상 변하지 않는 값은 상수에 저장하여 관리하는 것이 훨씬 효율적이며 가독성도 좋다.
변수와 상수의 구성
- 이름 (name): 변수를 구분 짓기 위해 임시로 저장된 이름
- 형 (type): 변수가 가질 수 있는 데이터의 자료형
- 메모리주소 (address): 변수가 메모리 상에 위치하고 있는 주소
- 값 (value): 변수에 들어가는 데이터. 대입연사자(=)를 통해 변수에 값을 지정할 수 있다.
- 영역 (scope): 변수가 사용가능한 영역. 변수의 사용이 허락되어지는 프로그램 범위를 말한다.
선언과 초기화
var name: Type = value
let name: Type = value
- var or let: 변수를 생성하는 키워드(var 는 변수, let은 상수)
- name: 변수명 (시스템 예약어, 공백 사용불가하며 lowerCamelCase로 작성한다. 숫자는 처음 시작에만 사용이 불가하며 그 후로는 자유롭게 사용이 가능하다.)
- Type: 변수의 타입 (
Int,Double,Float,String,Character,Bool…) - value: 변수의 값 (변수의 타입과 같은 타입의 값이 와야 한다.)
- Swift는 타입추론에 따라 변수의 타입을 생략할 수 있다. (단, 타입추론에 의한 타입이 정확한지 항상 확인해야하며 제대로 파악하지 못하는 경우에는 타입을 명시해야만 한다.)
타입
변수나 상수에는 값의 형(Type)이 지정되어야만 한다. (타입추론에 의하든 직접 작성하든 결국 변수나 상수는 타입을 가질 수 밖에 없다.)
변수나 상수에서 주로 사용되는 형으로는 Int(정수), Double & Float(소수), String(문자열), Character(문자) 등이 있다.
변수와 상수의 다양한 작성방법
var name: String = "안재형"
let name = "Swift" // 타입을 생략, 타입추론에 의하여 String 타입
var year: Int // 변수의 선언과 초기화를 분리하여 작성하는 경우에는 타입을 꼭 작성해야만 한다.
year = 1989 // 상수의 경우는 클래스나 구조체 객체 내에서 선언될 때를 제외하고 선언과 초기화를 분리할 수 없다.
타입 캐스팅
Swift에서는 타입이 다른 변수간의 결합은 불가능하다. 그러나 이를 가능케 하는 것으로 타입 캐스팅과 문자열 템플릿이 존재한다. 타입 캐스팅(형 변환)이란? 기존 변수의 타입을 바꾸는 것이 아니라 새로운 인스턴스를 만들어 내는 것이다. 사용법은 다음과 같다.
var year = 1989 // 타입추론에 의하여 Int(정수형)로 지정
var StringYear = String(year) // StringYear = "1989" 와 같다.
타입 캐스팅의 경우 캐스팅이 가능한 값이어야만 한다. 만약 “안재형” 이라는 String 타입을 Int 타입으로 타입 캐스팅을 한다면 오류가 발생한다.
문자열 템플릿(String Interpolation)
문자열 템플릿이란? 변수나 상수의 값을 문자열 속에 포함시키는 방법으로 값 자체를 변환 과정없이 직접 사용할 수 있다. 사용법은 다음과 같다.
let year: Int = 1989
let name: String = "안재형"
var profile: String = "\(year)년에 태어난 \(name)") // 1989년에 태어난 안재형
var apple: Int = 5
var banana: Int = 3
var result: String = "과일의 총 합은 \(apple + banana)개 입니다. // 과일의 총 합은 8개 입니다.
이처럼 문자열 템플릿을 이용하여 괄호 내부에서 값의 연산도 가능하다.