a === b 에 대해서 a와 b가 참조(레퍼런스)타입일 때 a와 b가 같은 인스턴스를 가르키는지 비교 후 불린 값을 반환한다
let num: Double = 12
let result = num.truncatingReminder(dividingBy: 2.5)
//result == 2.0
A <= 사이값 <= B
를 의미한다
A <= 사이값 <B
를 의미한다
A이상의 수, A이하의 수, A미만의 수
오버플로우를 자동으로 처리 후 연산을 진행하여 준다
var a: Int8 = 255인 경우 &+ 1은 0
A가 nil이 아니라면 A를 nil이라면 B를 반환한다
옵셔널을 사용할 때 매우 유용한 연산자
let var: Int = isNilValue ?? 0 // nil이면 0을 반환하게 된다
중위, 전위, 후위 연산자를 지칭하는 키워드
연산자임을 나타내는 키워드
연산자 결합 방향
우선순위
위 키워드를 이용하여 연산자에 새로운 역활을 추가하거나 변경할 수 있고, 새로운 연산자 기호를 만들어서 새로운 연산을 하도록 할수 있다
연산자 기호를 만들때 .
을 사용할 수 있지만 단, 맨 앞에 .
을 붙여야만 연산자에 포함된 마침표가 연산자로 인식된다 -> .+.
과 같은 형태
prefix func ** (value: Int) -> Int {
return value * value
}
let five: Int = -5
let result: Int = **five
print(result) // 25
postfix func ** (value: Int) -> Int {
return value + 10
}
let five: Int = 5
let result: Int = five**
print(result) // 15
만약 하나의 피연산자에 전위, 후위 연산자를 동시에 적용시키게 되면 후위연산자를 우선 실행하고 전위연산자를 실행하게 된다
**five**
의 경우 (five + 10) * (five + 10) = 225의 결과를 낳게 된다
import Foundation
infix operator ** : MultiplicationPrecedence
func ** (lhs: String, rhs: String) -> Bool {
return lhs.contains(rsh)
}
let hellowoonsik: String = "hellowoonsik"
let woonsik: String = "woonsik"
print(hellowoonsik ** woonsik) // true