본문 바로가기

iOS

[iOS] 변수와 상수, 자료형, 연산자

변수와 상수, 자료형, 연산자


본 문서에는 Swift의 기본 문법에 대하여 공부하며 정리가 필요한 내용들을 기재한다.

Index

1. 변수와 상수

2. Data Type

3. 타입 추론

4. 연산자




1. 변수와 상수


변수 | 상수 : 저장할 메모리 주소값을 이름으로 연결해 놓은 것.

변수와 상수는 값을 저장할 수 있다는 공통점이 있지만 ,상수는 한 번 저장된 값을 다른 값으로 변경할 수 없는 반면 변수는 필요에 따라 저장된 값을 다른 값으로 변경할 수 있다.

따라서, 변수에는 프로그램의 실행에 따라 변하는 값을 저장하고, 상수에는 변하지 않는 값을 저장한다.

상수는 실수로 값이 변경되는 일을 막을 수 있고, 값의 성격이 명확히 분류되므로 관리하기에도 용이하다.

변수와 상수 초기화 방법


변수 선언 : var + 변수명

상수 선언 : let + 상수명


2. Data Type


타 언어와 같이 산술 연산시 몇몇 케이스를 제외하고는 자료형을 통일시켜줘야한다.

스위프트를 포함한 대다수 언어에서 실수와 정수는 일부 호환이 가능하며, 일반적으로 정수를 실수로 변환하여 연상르 처리한다.

-> 실수를 정수로 변환하려면 갑의 손실이 발생하기 때문에

타입 어노테이션

변수, 상수를 선언 및 초기화할때는 아래 예시와 같이 자료형도 함께 선언해준다.

// 변수명 : [Data Type] = "value"

var name: String

var pi: Float

var flag: Bool

var firstLetter: Character = "S"

var year: Int = "2020"

타입 어노테이션(Type Annotation)이란, 변수나 상수를 선언할 때 그 자료형을 명시적으로 선언해 줌으로써 어떤 타입의 값이 저장될 것인지를 컴파일러에게 직접 알려주는 문법이다.

3. 타입 추론


아까 변수, 상수 초기화 방법 에서는 그냥 Type 을 명시적으로 지정하지 않고 그냥 값만 넣어 초기화헀었다.

즉, 타입 어노테이션을 진행하지 않았는데도 정상적으로 초기화가 되었다.

이는 스위프트의 특성중 설계에 의한 안정성(Safety by design) 이라는 항목에 해당한다.

스위프트는 구조적 안정성을 위해 여러 장치를 도입하였으며 그 중 하나가 타입 추론 이다.

타입 추론이란 변수나 상수를 초기화할 떄 입력된 값을 분석하여 적절한 타입을 컴파일러가 스스로 추론하는 기능을 의미한다.

간단한 예시로, 변수의 초기값이 "Hello World" 일 경우 'String 타입인것을 스스로 추론' 하는 것을 의미한다.

이 덕분에 우리는 변수나 상수에 명시적으로 타입을 지정해주지 않아도 되었던 것이다.

그렇다면 타입 어노테이션을 써야 할지 말아야 할지 고민이 될때는 어떻게 해야할까?

반드시 타입 어노테이션을 사용해야 하는 두 경우를 제외하고는 타입을 명시적으로 선언하지 않아도 된다.

  1. 선언과 초기화를 분리할 경우

    ex) var year : Int // 선언 + 타입 어노테이션

    ex) year = 2020 // 초기화

  2. 타입 추론으로 얻어지는 타입이 아닌, 다른 타입을 직정 지정할 필요가 있을 때

    ex) var temper1 = 3 // Int 타입

    ex) var temper2: Float = 3 //Float 타입

문자열 템플릿

문자열 템플릿이란 변수 또는 상수 값을 문자열 속에 포함시키는 방법으로, 정수나 실수 등 문자열이 아닌 값도 변환 과정 없이 사용할 수 있도록 스위프트가 제공하는 기능이다.

문자열 템플릿은 문자열에서 원하는 위치에 백슬래시(\) 를 입력하고, 포함하려는 값이 들어있는 변수나 상수를 괄호로 감싸도록 한다.

예시 코드

// 상수 및 변수 초기화
let name = "여정수"
let year = 2020
let month = 04
let day = 11

// 문자열 템플릿을 사용한 문자열 결합
let profile = "제 이름은 \(name)입니다."
let today = "오늘은 \(year)년 \(month)월 \(day)일 입니다."

print(profile)
print(today)

// 제 이름은 여정수입니다.
// 오늘은 2020년 04월 11일 입니다.

4. 연산자


본 카테고리에서는 스위프트에서만 적용되는 특별한 연산자만 정리하도록 한다.

범위 연산자

범위 연산자 (Range Operator) 는 스위프트에서 제공하는 독특한 연산자이다.

주어진 값으로 특별한 연산을 숳애하는 것이 아니라 주어진 값 사이의 범위를 일정한 정수 간격으로 표현하는 연산자로서, 닫힌 범위 연산자와 반 닫힌 범위 연산자 두가지 종류가 존재한다.

  1. 닫힌 범위 연산자 (Closed range operator)

닫힌 범위 연산자는 주어진 피연산자 a,b를 포함하는 범위를 나타내는 연산자이다.

닫힌 범위 연산자는 아래와 같이 표기한다.

1 ... 5 // 1, 2, 3, 4, 5

점 세 개로 표현되는 범위 연산자는 양 쪽 피연산자를 포함하는 범위 안에 있는 모든 정수값을 순서대로 표현한다.

  1. 반 닫힌 범위 연산자 (Half-closed range operator)

반 닫힌 범위 연산자란 절반만 닫힌 연산자를 의미하며, 두 개의 피연산자 중 왼쪽 경계는 포함하되 오른쪽 경계는 포함하지 않는 경우를 의미하며 아래와 같이 이용한다.

1 ..< 5 // 1, 2, 3, 4

반 닫힌 범위 연산자는 ..< 기호를 통해 표시한다.

닫힌 연산자는 주로 for ~ in 구문에서 주로 아래와 같이 응용되어진다.

let a = 1
let b = 5

// 닫힌 범위 연산자
for row in a...b {
    row
}


// 반 닫힌 범위 연산자
for row in a..<b {
    row
}

'iOS' 카테고리의 다른 글

[iOS] 배열, 집합, 튜플 자료형  (0) 2020.04.11
[iOS] 반복문, 조건문, 제어 전달문  (0) 2020.04.11
[iOS] Music Player  (0) 2020.04.09
[iOS] Target-Action Pattern  (0) 2020.04.07
[iOS] 메모 저장기능 구현  (0) 2020.04.07