변수와 상수

  • 변수란? 프로그램에서 데이터의 저장공간을 담당
  • 변수와 상수의 차이는? 변수와 상수는 값을 저장할 수 있는 공통점이 있지만 상수는 처음 저장된 값을 변경할 수 없다. 반면 변수는 언제든지 저장된 값을 변경할 수 있다.
  • 그러나 변수라고 하여 아무 값이나 마음대로 변경할 수 있는 것은 아니다. 처음 저장된 값이 정수형이면 이후에도 정수형, 문자열이라면 이후에도 문자열로만 변경이 가능하다.
  • 프로그래밍 소스 관리 목적상 변하지 않는 값은 상수에 저장하여 관리하는 것이 훨씬 효율적이며 가독성도 좋다.

변수와 상수의 구성

  • 이름 (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에서는 타입이 다른 변수간의 결합은 불가능하다. 그러나 이를 가능케 하는 것으로 타입 캐스팅과 문자열 템플릿이 존재한다.
  • 타입 캐스팅(형 변환)이란? 기존 변수의 타입을 바꾸는 것이 아니라 새로운 인스턴스를 만들어 내는 것이다.
  • 사용법은 다음과 같다.
  • 타입 캐스팅의 경우 캐스팅이 가능한 값이어야만 한다. 만약 “안재형” 이라는 String 타입을 Int 타입으로 타입 캐스팅을 한다면 오류가 발생한다.
var year = 1989 // 타입추론에 의하여 Int(정수형)로 지정
var StringYear = String(year) // StringYear = "1989" 와 같다.

문자열 템플릿(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개 입니다.
  • 이처럼 문자열 템플릿을 이용하여 괄호 내부에서 값의 연산도 가능하다.