Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- spring
- FileOwner
- 앱배포
- Python
- 스위프트
- ios
- 앱버전구하기
- JavaScript
- 개발기록
- customclass
- Swift
- Xcode
- Xib
- 맥
- DispatchGroup
- AJAX
- 웹
- 계산기앱
- 자바스크립트
- iOS앱배포
- 딩동말씀
- 계산기앱만들기
- jQuery
- subscript
- FLASK
- iOS배포
- iOS계산기
- MainScheduler
- 스프링
- 파이썬서버
Archives
- Today
- Total
개발하는 뚝딱이
[swift] 연산자 본문
책 <스위프트 프로그래밍 3판 ;야곰 지음> 을 정리한 글입니다.
일반적인 연산자는 다른 언어와 비슷하다. 단순한 연산자 외에 조금 생소한 연산자를 정리해본다.
1. 부동소수점 타입의 나머지 연산
- .truncatingRemainder(dividingBy:)
let num: Double = 5.0
let result: Double = number.truncatingRemainder(dividingBy: 1.5) // 0.5
2. 비교 연산자
- 참조 타입인 클래스의 인스턴스에서만 비교 연산자 사용 가능
- ===
let referenceA: SomeClass = SomeClass()
let referenceB: SomeClass = SomeClass()
let referenceC: SomeClass = referenceA
let isSameReferenceAB: Bool = referenceA === referenceB // false
let isSameReferenceAC: Bool = referenceA === referenceC // true
let valueA: Int = 3
let valueB: Int = 5
let isSameValueAB: Bool = valueA == value B // false
3. 범위연산자
- A...B : A이상 B이하
- A..<B : A이상 B미만
- A... : A이상
- ...A : A이하
- ..<A : A미만
4. 비트 연산자
- ~A : A의 비트를 반전한 결과
- A&B : A와 B의 AND 논리 연산
- A|B : A와 B의 OR 논리 연산
- A^B : A와 B의 XOR 논리 연산
- A>>B : A의 비트를 B만큼 shift한 결과
- A<<B : A의 비트를 B만큼 shift한 결과
print(4<<1) // 4(0100), result = 8(1000)
var A = 4
let B = 1
A <<= B // A = 8
5. 오버플로우 연산자
- &+
- &-
- &*
var num: UInt8 = 0
let underflowedValue: UInt8 = num &- 1 // 255
let overflowedValue: UInt8 = underflowedValue &+ 1 // 0
6. 기타 연산자
A ?? B // A가 nil이 아니면 A반환, A가 nil이면 B반환
-A // 부호변경
O! // O(옵셔널 개체)값 강제 추출
V? // V(옵셔널 개체) 안전하게 추출, V가 옵셔널임을 표시
let num: Int = someOptionalInt != nil ? someOptionalInt! : 0
let num2: Int = someOptionalInt ?? 0 // 위 코드보다 더 안전하게 사용 가능
7. 사용자 정의 연산자
- 오버로드 가능
- 전위연산자, 후위연산자 같이 사용하면 후위연산자 먼저 수행
(1) 전위연산자
prefix operator **
prefix func ** (value: Int) -> Int {
return value * value
}
let num: Int = -5
let sqrtNum: Int = **num // 25
(2) 후위연산자
postfix operator **
postfix func ** (value: Int) -> Int {
return value + 10
}
let num: Int = 5
let result: Int = num** // 15
(3) 중위연산자
- 우선순위 그룹 MultiplicationPrecedence를 명시하지 않으면, DefaultPrecedence 그룹을 우선순위로 갖게 됨
import Foundation
infix operator **: MultiplicationPrecedence
func ** (lhs: String, rhs: String) -> Bool {
return lhs.contains(rhs)
}
let hello: String = "Hello everyone!"
let say: String = "Hello"
let result: Bool = hello ** say // true
'swift' 카테고리의 다른 글
[swift] 옵셔널 (0) | 2020.04.28 |
---|---|
[swift] 메소드 (method) (0) | 2020.04.27 |
[swift] 프로퍼티(property) (0) | 2020.04.15 |
[swift] 구조체(struct)와 클래스(class) 비교 (0) | 2020.04.08 |
[swift] 데이터 타입 (0) | 2020.04.02 |