You are currently viewing IOS 18.0 : Swift  = Blocks, Scope and Spacing
swift

IOS 18.0 : Swift = Blocks, Scope and Spacing


코드의 울타리: 스코프(Scope)와 블록(Block) 이해하기

코딩을 하다 보면 { } (중괄호)를 정말 많이 사용하게 됩니다. 이 단순해 보이는 기호는 사실 코드의 구조를 만드는 아주 중요한 역할을 합니다. 중괄호를 사용할 때, 우리는 두 가지 중요한 개념을 마주하게 되는데, 바로 **블록(Block)**과 **스코프(Scope)**입니다.

코드의 영역, 블록

중괄호로 감싸인 코드 덩어리 자체를 블록이라고 부릅니다. 말 그대로 코드의 한 구역, 한 덩어리라고 생각하시면 쉽습니다.

Swift

{
    // 이 안이 바로 하나의 '코드 블록'입니다.
}

변수의 활동 범위, 스코프

더 중요한 개념은 스코프입니다. 스코프는 ‘범위’나 ‘영역’이라는 뜻인데, 프로그래밍에서는 변수나 상수가 살아 숨 쉬고 활동할 수 있는 유효 범위를 의미합니다. 중괄호는 바로 이 스코프를 만드는 경계선, 즉 울타리 역할을 합니다.

이 울타리에는 중요한 규칙이 있습니다.

1. 안에서는 밖을 볼 수 있지만, 밖에서는 안을 볼 수 없다.

가장 바깥, 즉 어떤 중괄호에도 속하지 않은 영역을 **전역 스코프(Global Scope)**라고 부릅니다. 여기에 선언된 변수는 어디서든 접근할 수 있는 ‘유명인’과 같습니다.

Swift

var celebrityName = "폴" // 전역 스코프에 선언된 유명인

{ // 안쪽 동네 (지역 스코프)
    print(celebrityName) // 동네 안에서 유명인을 알아보는 것은 당연합니다.
    celebrityName = "제이"  // 이름도 바꿀 수 있죠.
}

print(celebrityName) // "제이"로 바뀐 이름이 출력됩니다.

하지만 반대로, 울타리 안에서 선언된 변수는 그 지역에서만 통용되는 ‘토박이’와 같습니다. 울타리 밖에서는 그 존재조차 알 수 없습니다.

Swift

{ // A 동네
    var localName = "철수" // A 동네 토박이 '철수'
}

print(localName) // 에러 발생! A 동네 밖에서는 '철수'가 누군지 모릅니다.

2. 스코프는 중첩될 수 있다.

스코프는 집 안에 또 다른 방이 있는 것처럼 중첩될 수 있습니다. 이 규칙은 그대로 적용됩니다. 안쪽 방에서는 거실에 있는 것을 볼 수 있지만, 거실에서는 안쪽 방에 무엇이 있는지 알 수 없습니다.

Swift

var family = "우리 가족" // 집 전체 (가장 바깥 스코프)

if true { // 거실 (중간 스코프)
    var livingRoomItem = "TV"
    
    if true { // 내 방 (가장 안쪽 스코프)
        print(family)       // 내 방에서 '우리 가족'을 아는 건 당연하고,
        print(livingRoomItem) // 거실에 'TV'가 있는 것도 알 수 있습니다.
    }
    
    // print(내 방 물건) // 에러! 거실에서는 내 방 물건을 알 수 없습니다.
}

지금 if true 라는 코드는 스코프를 설명하기 위해 임시로 만든 울타리일 뿐입니다. 앞으로 배우게 될 함수(function), 클래스(class), 구조체(struct) 등 수많은 요소들이 자신만의 스코프를 만드는 중괄호를 사용합니다. 지금 이 기본 규칙을 이해하는 것이 정말 중요합니다.

좋은 코드의 기본, 들여쓰기

스코프가 생기면 코드를 시각적으로 구분해주는 것이 좋습니다. 이때 사용하는 것이 **들여쓰기(Indentation)**입니다.

스코프 안으로 들어갈 때마다 스페이스바 4칸 정도를 들여쓰는 것은 단순한 멋내기가 아니라, 코드의 구조, 즉 어떤 코드가 어떤 울타리 안에 속해 있는지를 한눈에 파악하게 해주는 지도와 같습니다.

Swift

// 전역 스코프 (들여쓰기 없음)
var project = "앱 만들기"

if true {
    // 첫 번째 스코프 (들여쓰기 한 번)
    var feature = "로그인 기능"
    
    if true {
        // 두 번째 스코프 (들여쓰기 두 번)
        var detail = "소셜 로그인 추가"
        print(detail)
    }
}

특히 코드가 복잡해지는 SwiftUI 같은 환경에서는 이 들여쓰기 규칙을 지키지 않으면 내가 만든 변수가 어디에 있는지, 코드가 어디에 속해 있는지 길을 잃기 십상입니다. 깔끔한 들여쓰기는 좋은 코드를 만드는 첫걸음입니다.

핵심 정리:

  • { } (중괄호)는 코드의 블록이자, 변수의 활동 범위인 스코프를 만듭니다.
  • 스코프 안쪽에서는 바깥쪽 변수에 접근할 수 있지만, 바깥에서는 안쪽 변수에 접근할 수 없습니다.
  • 새로운 스코프가 시작될 때마다 들여쓰기를 해서 코드의 구조를 명확히 보여주는 것이 매우 중요합니다.

답글 남기기