티스토리 뷰

Swift 문법의 기본인 변수, 상수, Scope 에 대해 알아보겠습니다.

 

1. Variable

변할 수 있는 값을 의미하며 변수라고 합니다.

 

변수 선언 방식은 다음과 같습니다.

/*
 var variableName = variableValue
 */

var name = "Swift" // Swift 에서 문자열은 "" 로 표시
var year = 2020
var valid = true // 참: true, 거짓: false
var x = 0.0, y = 0.0, z = 0.0

// 표현식
name

// 출력 함수 사용
print(name)
print(year)
print(valid)
print(x, y, z)

 

이미 선언된 변수에 새로운 값을 할당하는 방식은 다음과 같습니다.

/*
 variableName = newVariableValue
 */

name = "Steve"

// var name = "Steve"
// 위 코드는 에러 발생!
// 동일한 Scope 에서 같은 이름의 변수는 선언할 수 없음.

name = "Yoona"
print(name)  // 결과: Yoona

var anotherName = name
print(name, anotherName) // 결과: Yoona Yoona

anotherName = "Tim"
print(name, anotherName) // 결과: Yoona Tim

// year = "2020"
// 위 코드는 에러 발생! 
// 변수를 선언한 시점에 해당 변수의 타입이 결정되기 때문에 이후에 다른 타입의 값을 해당 변수에 할당할 수는 없음.

 

2. Constants

상수는 한번 값을 지정하면 변경할 수 없는 값을 의미합니다.

 

상수의 선언은 다음과 같습니다.

/*
 let constantName = constantValue
 */
 
 let name = "Yoona"
 name
 
 // name = "Tim"
 // 위 코드는 에러 발생!
 // 상수의 경우 한번 값을 지정하면 값을 변경할 수 없음.

 

변수와 상수 중 Swift 에서는 상수를 더 선호하는데 상수를 사용하면 다음과 같은 장점이 있기 때문입니다.

 

- 장점 1: 실수로 인해 값이 변경되는 것을 방지

- 장점 2: 코드 최적화가 되어 더 빠르게 실행 가능

 

따라서 이름을 지정해야 하는 경우 먼저 상수(let)으로 선언하여 사용하다가 나중에 값에 변경이 필요한 경우 변수(var)로 수정하는 것을 권장합니다.

 

3. Naming Convention

Swift에서 변수 등의 이름을 지을 때 CamelCase 를 사용합니다.

 

CamelCase 는 2가지 경우로 나뉘는데 다음과 같습니다.

종류 예시 용도
UpperCamelCase NameVariable Class, Structure, Enumeration, Extension, Protocol
lowerCamelCase nameVariable Variable, Constant, Function, Property, Method, Parameter

 

4. Scope

변수 및 상수가 유효한 범위를 말하며, 변수와 상수는 선언된 위치에 따라 Scope 가 결정됩니다.

 

Scope 는 크게 2가지로 구분됩니다.

 

- Global Scope

   : {} 에 속하지 않으며 1개만 존재합니다.

- Local Scope

   : {} 내부에 포함되며, 여러 개가 존재할 수 있고, 중첩도 가능합니다.

 

// #1 (Global Scope)
let g1 = 123
// g2 - 에러: g2 상수를 선언하기 전이라 접근 불가능!
// l1 - 에러: l1 은 하위 Scope 에 선언되어 있어 접근 불가능!

func doSomething() {
	// #3 (Local Scope 1)
    g1  // 결과: 123
	g2  // 결과: 123
    
    let l1 = 123
    let g1 = 456
    
    g1  // 결과: 456
	g2  // 결과: 123
    
    if true {
    	// #4 (Local Scope 2)
        l1  // 결과: 123
        g1  // 결과: 456
        // l2 - 에러: l2 상수를 선언하기 전이라 접근 불가능!
        let l3 = 123
    }
    
    // #5 (Local Scope 1)
    let l2 = 123
    // l3 - 에러: 하위 Scope 에 선언되어 있어 접근 불가능!
}

// #2 (Global Scope)
let g2 = 123
g1  // 결과: 123
g2  // 결과: 123

doSomething()

 

Scope 는 다음과 같은 규칙을 가지고 있습니다.

 

1. 동일한 Scope 에 있는 변수와 상수는 접근할 수 있다.

2. 동일한 Scope 에서는 이전에 선언된 변수와 상수에 접근할 수 있다.

3. Local Scope 에서는 자신의 상위 Scope 에 선언된 변수와 상수에 접근할 수 있다.

    하지만, Local Scope 이후에 선언된 변수 및 상수에는 접근할 수 없다.

4. 상위 Scope 에서는 하위 Scope 에 접근할 수 없다.

5. 서로 다른 Scope 에 동일한 이름을 가진 변수와 상수가 존재한다면, 가장 인접한 Scope 에 있는 변수와 상수를 사용한다.


지금까지 Swift 에서 변수, 상수 선언 방식 및 특징을 알아보고 명명 규칙과 Scope 에 대해 알아보았습니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함