Swift 연산자
낯선 언어를 매일 학습하며 몰입과 성장을 기록하는 일지
· 2 min read
오늘의 포커스 #
- 공식 문서 섹션 또는 학습 주제
- 구현/실험할 기능 또는 예제
- 집중을 위해 설정한 제약 조건(시간, 도구 제한 등)
Ternary Conditional Operator (삼항 연산자) #
- 형태:
question ? answer1 : answer2 question이true면answer1, 아니면answer2를 평가해 반환.- 간결하지만 과도한 중첩은 가독성을 해침.
let contentHeight = 40
let hasHeader = true
let rowHeight = contentHeight + (hasHeader ? 50 : 20) // 90
Nil-Coalescing Operator (nil 병합 연산자) #
- 형태:
a ?? b a가 옵셔널일 때, 값이 있으면 언래핑한 값 반환, nil이면 기본값b반환.a != nil ? a! : b의 간결한 형태이며, 단락 평가를 지원(앞이 non-nil이면b미평가).
let defaultColorName = "red"
var userDefinedColorName: String? // 기본값 nil
var colorNameToUse = userDefinedColorName ?? defaultColorName // "red"
userDefinedColorName = "green"
colorNameToUse = userDefinedColorName ?? defaultColorName // "green"
Range Operators (범위 연산자) #
Closed Range: a...b
#
a부터b까지 포함.- $[a,b]$
for index in 1...5 {
print("\(index) times 5 is \(index * 5)")
}
// 1*5=5 ... 5*5=25
Half-Open Range: a..<b
#
a부터b미만(마지막 값 제외). 배열 인덱싱에 유용.- $[a,b)$
let names = ["Anna", "Alex", "Brian", "Jack"]
for i in 0..<names.count {
print("Person \(i + 1) is called \(names[i])")
}
One-Sided Ranges: a..., ...b, ..<b
#
- 한쪽 끝을 생략한 범위.
- 컬렉션 서브스크립트나 포함 여부 검사 등에 사용.
let names = ["Anna", "Alex", "Brian", "Jack"]
for name in names[2...] { print(name) } // Brian, Jack
// [2, end]
for name in names[...2] { print(name) } // Anna, Alex, Brian
// [0, 2]
for name in names[..<2] { print(name) } // Anna, Alex
// [0, 2)
let range = ...5
range.contains(7) // false
range.contains(4) // true
range.contains(-1) // true