part1. 연산자

구름코딩·2020년 8월 29일
0

비교 연산자

===

  • 참조가 같은지 다른지 비교하는 연산자

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..<\B

A <= 사이값 <B를 의미한다

A... , ...A , ..<\A

A이상의 수, A이하의 수, A미만의 수

오버플로우 연산자

&+ , &- , &*

오버플로우를 자동으로 처리 후 연산을 진행하여 준다

var a: Int8 = 255인 경우 &+ 1은 0

nil 병합 연산자

A ?? B

A가 nil이 아니라면 A를 nil이라면 B를 반환한다

옵셔널을 사용할 때 매우 유용한 연산자

let var: Int = isNilValue ?? 0 // nil이면 0을 반환하게 된다

사용자 정의 연산자

infix, prefix, postfix

중위, 전위, 후위 연산자를 지칭하는 키워드

operator

연산자임을 나타내는 키워드

associativity

연산자 결합 방향

precedence

우선순위

위 키워드를 이용하여 연산자에 새로운 역활을 추가하거나 변경할 수 있고, 새로운 연산자 기호를 만들어서 새로운 연산을 하도록 할수 있다

연산자 기호를 만들때 .을 사용할 수 있지만 단, 맨 앞에 .을 붙여야만 연산자에 포함된 마침표가 연산자로 인식된다 -> .+. 과 같은 형태

전위 연산자 구현

  • 매개변수 Int값을 제곱하여 반환하는 함수 구현
prefix func ** (value: Int) -> Int {
	return value * value
}
let five: Int = -5
let result: Int = **five
print(result) // 25

후위 연산자 구현

  • 매개변수 Int값에 10을 더하여 반환하는 함수 구현
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의 결과를 낳게 된다

중위 연산자 구현

  • A문자열에 대해 B문자열이 속해있는지 확인해주는 함수 구현
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
profile
내꿈은 숲속의잠자는공주

0개의 댓글

관련 채용 정보