Notice
Recent Posts
Recent Comments
Link
«   2025/03   »
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
Tags
more
Archives
Today
Total
관리 메뉴

성장 아카이브

#2. 연산자 본문

야매 프로그래밍/iOS

#2. 연산자

루키패밀리 2020. 5. 5. 23:02

** 스위프트 프로그래밍 - 야곰 책을 위주로 공부했습니다. **

 

[연산자 종류]

- 할당연산자:   =

- 산술연산자:   +   -   *   /   %

- 비교연산자:   ==   >=   <=   >   <   !=   ===   !==   ~=

- 삼항조건연산자:   Q?A:B

- ★범위연산자:   A...B   A..<B   A...   ...A   ..<A

- 부울연산자:   !   &&   ||

- 비트연산자:   ~A   A&B   A|B   A^B   A>>B   A<<B

- 복합할당연산자:   +=   -=   *=   /=   %=

- 오버플로연산자:   &+   &-   &*

- 부호변경연산자:   -A

- ★nil병합연산자:   ??

- ★옵셔널강제추출연산자:   A!

- ★옵셔널연산자:   A?

- 연산자에게는 "우선순위"과 "결합방향"이 있다.

- ★사용자정의연산자: 전위/중위/후위 결합방향 우선순위

 

 * ★는 스위프트에서 도입되는 개념들로 사용법을 자세히 살펴보았다.

 

1. 범위연산자

// 범위연산자
var arr: [Character] = ["0", "1", "2", "3", "4", "5"]

var str:String = ""
for i in arr[0...3] { // 0 ~ 3 (0이상 3이하)
    str.append(i)
}
print(str) // 0123

str = ""
for i in arr[0..<3] { // 0 ~ 2 (3미만)
    str.append(i)
}
print(str) // 012

str = ""
for i in arr[0...] { // 0 ~ (0이상)
    str.append(i)
}
print(str) // 012345

str = ""
for i in arr[...3] { // ~ 3 (3이하)
    str.append(i)
}
print(str) // 0123

 

2. 옵셔널연산자 & nil병합연산자 & 옵셔널강제추출연산자

// 옵셔널연산자 & nil병합연산자 & 옵셔널강제추출연산자
var value: String? = nil // ? 옵셔널연산자
print(value ?? "nil입니다.") // ?? nil병합연산자
value = "rookie"
print(value!) // ! 옵셔널강제추출연산자 rookie

 

nil병합연산자는 옵셔널을 사용할 때 아주 유용한 연산자이다.

 

3. 사용자정의연산자

// 사용자정의연산자
// 전위
prefix operator ** // 정의
prefix func **(value: Int) -> Int{ // 구현
    return value * value
}
print(**2) // 4

// 후위
postfix operator +++ // 정의
postfix func +++(value: Int) -> Int { // 구현
    return value + value + value
}
print(10+++) // 30

// 중위
infix operator <- : MultiplicationPrecedence // 정의
func <-(lhs: String, rhs: String) -> Bool { // 구현
    return lhs.contains(rhs)
}
print("Hello rookie" <- "rookie") // true

 

이미 존재하는 연산자에 기능을 추가할 때는 따로 정의하지 않고 함수만 중복 구현하면 됩니다.

 

4. [추가] 사용자정의 우선순위 & 결합방향

- 예정 -

'야매 프로그래밍 > iOS' 카테고리의 다른 글

#3. Swift UserDefaults 사용하는 법  (0) 2020.08.22
#1. 데이터 타입  (0) 2020.05.02
#0. 스위프트를 시작하며  (0) 2020.04.18
Comments