[iOS/Swift] 기본 연산자(Basic Operators)

2025. 3. 21. 22:30·iOS/Swift
반응형

[ 이 게시물은 Swift.org를 참고하며 Swift를 공부하기 위해 작성하는 글 입니다. ]

대입 연산자 (Assignment Operator)

= 연산자를 통해 초기화할 수 있습니다.

let b = 10
var a = 5
a = b
// a is now equal to 10

 

우항이 여러개의 값이 있는 튜플이라면 튜플의 요소는 여러개의 상수 또는 변수로 한번에 분해될 수 있습니다.

let (x, y) = (1, 2)
// x is equal to 1, and y is equal to 2

 

C와 Objective-C에서의 대입 연산자와 다르게 Swift의 대입 연산자는 값을 반환하지 않습니다. 즉, 아래의 예시는 유효하지 않습니다.

if x = y {
    // This is not valid, because x = y does not return a value.
}

복합 대입 연산자 (Compound Assignment Operators)

C처럼 Swift는 대입(=)과 다른 연산자를 결합한 복합 대입 연산자(compound assignment operators)를 제공합니다. 아래 예시는 덧셈 대입 연산자(+=) 입니다.

var a = 1
a += 2
// a is now equal to 3

Nil-결합 연산자 (Nil-Coalescing Operator)

nil-결합 연산자 (nil-coalescing operator)(a ?? b)는 옵셔널 a에 값이 있으면 a로 값을 반환하고, a가 nil이면 b를 반환합니다.

또한, nil-결합 연산자는 아래 코드로 짧게 표현할 수 있습니다.

a != nil ? a! : b

 

위 코드는 삼항 조건 연산자를 사용하고 a가 nil이 아닐 경우 a에 래핑된 값을 접근하기 위해 강제 언래핑(a!)하며 a가 nil일 경우 b를 반환합니다.

let defaultColorName = "red"
var userDefinedColorName: String?   // defaults to nil


var colorNameToUse = userDefinedColorName ?? defaultColorName
// userDefinedColorName is nil, so colorNameToUse is set to the default of "red"

 

위 예제는 기본 컬러 이름과 옵셔널 사용자가 정의한 컬러 이름 중 선택하기 위해 nil-결합 연산자를 사용합니다.

범위 연산자 (Range Operators)

Swift는 값의 범위를 짧게 표현하기 위해 몇개의 범위 연산자(range operators)를 제공합니다.

 

닫힌 범위 연산자(Closed Range Operator)

닫힌 범위 연산자(closed range operator)(a..b)는 값 a와 b가 포함된 a부터 b까지의 범위 실행을 정의합니다. a의 값은 b보다 클 수 없습니다.

 

닫힌 범위 연산자는 for-in 루프와 같이 모든 값을 사용할 범위를 반복할 때 유용합니다.

for index in 1...5 {
    print("\(index) times 5 is \(index * 5)")
}
// 1 times 5 is 5
// 2 times 5 is 10
// 3 times 5 is 15
// 4 times 5 is 20
// 5 times 5 is 25

반-열림 범위 연산자 (Half-Open Range Operator)

반-열림 범위 연산자(half-open range operator)(a..<b)는 b가 포함되지 않은 a부터 b까지의 범위 실행을 정의합니다. 이 연산자는 마지막 값은 포함되지 않지만 처음 값은 포함되므로 반-열림 (half-open)이라고 합니다. 닫힌 범위 연산자와 같이 a의 값은 b보다 클 수 없습니다.

 

반-열림 범위는 리스트의 길이까지 순차적으로 작업하는 것이 유용한 배열과 같은 0부터 시작하는 리스트와 함께 사용할 때 유용합니다.

let names = ["Anna", "Alex", "Brian", "Jack"]
let count = names.count
for i in 0..<count {
    print("Person \(i + 1) is called \(names[i])")
}
// Person 1 is called Anna
// Person 2 is called Alex
// Person 3 is called Brian
// Person 4 is called Jack

 

배열은 4개의 아이템을 가지고 있지만 0..<count 는 반-열림 범위이기 때문에 오직 3(배열의 마지막 아이템의 인덱스)까지 카운트 합니다.

단-방향 범위 (One-Sided Ranges)

닫힌 범위 연산자는 한방향으로 끝까지의 범위에 대한 형식입니다. 아래 예시는 인덱스 2에서 배열 끝까지 배열의 모든 요소를 포함하는 범위가 그 예시입니다. 이러한 경우 단-방향 범위를 통해 범위 연산자의 한쪽을 생략할 수 있습니다. 이러한 범위의 종류는 연산자가 오직 한쪽의 값만 가지고 있으므로 단-방향 범위 (one-sided range)라고 합니다.

for name in names[2...] {
    print(name)
}
// Brian
// Jack


for name in names[...2] {
    print(name)
}
// Anna
// Alex
// Brian

 

단-방향 범위는 위와 같은 상황 말고도 다른 컨텍스트에서도 사용될 수 있습니다. 반복이 어디에서 시작해야 하는지 명확하지 않기 때문에 반복문에서 단-방향 범위의 첫번째 값을 생략할 수 없습니다. 반복문에서 단-방향 범위의 마지막 값은 생략할 수 있습니다. 그러나 범위가 무한정 계속되므로 루프에 대해 명시적으로 종료 조건을 추가해야 합니다. 아래 코드와 같이 단-방향 범위에 특정 값이 포함되어 있는지 체크할 수 있습니다.

let range = ...5
range.contains(7)   // false
range.contains(4)   // true
range.contains(-1)  // true

References

https://docs.swift.org/swift-book/documentation/the-swift-programming-language/aboutswift

 

Documentation

 

docs.swift.org

 

반응형
저작자표시 비영리 변경금지 (새창열림)
'iOS/Swift' 카테고리의 다른 글
  • [iOS/Swift] 함수 (Functions)
  • [iOS/Swift] 제어 흐름 (Control Flow)
  • [iOS/Swift] 콜렉션 타입(Collection Types)
  • [iOS/Swift] Swift 기본 구문 (The Basics)
seunghwaan
seunghwaan
공부한 내용을 정리하는 개발 기록 블로그
    반응형
  • seunghwaan
    SH's Devlog
    seunghwaan
  • 전체
    오늘
    어제
    • 분류 전체보기 (148) N
      • Android (62)
        • Basic (17)
        • Kotlin(Java) (14)
        • UI & Animation (1)
        • Compose (2)
        • Coroutines (1)
        • Dependency Injection (6)
        • RxJava (8)
        • BLE (3)
        • TDD (2)
        • JetPack (1)
        • NextStep (4)
        • Error Log (3)
      • Flutter (14)
        • Basic (5)
        • Dart (1)
        • State Management (2)
        • Widgets (4)
        • Error and Tips (2)
      • iOS (8)
        • Basic (0)
        • Swift (8)
      • Web Frontend (4) N
        • JavaScript(TS) (4) N
        • React (0)
      • CS(Computer Science) (18)
        • Network (4)
        • Database (10)
        • Design Pattern (1)
        • Computer Architecture (3)
        • Operating System (0)
      • Cloud (6)
        • AWS (6)
      • DevOps (25)
        • GIT (4)
        • CI CD (8)
        • Linux (4)
        • Docker (9)
        • Error Log (0)
      • 코딩테스트 (10)
        • DB (6)
        • 알고리즘 (4)
      • Backend (1)
        • Spring (1)
      • Mac Tip (0)
      • Language (0)
        • English (0)
        • Japanese (0)
      • Temporary (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    docker
    cs
    Dependency Injection
    database
    FLUTTER
    Linux
    AWS
    gradle
    네트워크
    컴퓨터공학
    Android
    di
    CI
    Algorithm
    IOS
    Swift
    시작하세요! 도커
    RxJava
    Network
    BLE
    cognito
    상태 관리
    Kotlin
    Computer Science
    Jenkins
    JavaScript
    error
    MySQL
    CICD
    Dagger
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
seunghwaan
[iOS/Swift] 기본 연산자(Basic Operators)
상단으로

티스토리툴바