iOS/iOS Swift 문법

iOS swift 연산자

Developer-Michelle 2022. 7. 14. 15:45

*할당 연산자

A = B

 

*산술 연산자 

+ = * / %

 

*비교 연산자

A === B 참조가 같다

A와 B가 참조(레퍼런스) 타입일 때 A와 B가 같은 인스턴스를 가리키는지 비교하여 불리언 값을 반환.

A !== B 참조가 같지 않다.

A ~= B 패턴 매치 (A와 B의 패턴이 매치되는지 확인하여 불리언 값을 반환)

 

[참조 비교 연산자]

스위프트의 유일한 참조 타입인 클래스의 인스턴스에서만 참조 비교 연산자를 사용할 수 있다.

스위프트의 기본 데이터 타입은 모두 구조체로 구현되어 있기 때문에 값 타입. 그렇기 때문에 값의 비교 연산에는 ==을 사용하고, 클래스의 인스턴스인 경우에만 === 사용.

 

 

*삼항 조건 연산자 

A ? B : C

Question ? A : B

Question(불리언값)이 참이면 A 를, 거짓이면 B 를 반환.

 

조건? ㅇㅇ : ㄴㄴ

 

*범위 연산자

폐쇄 범위 연산자 A...B (A~B A,B포함)

반폐쇄 범위 연산자 A..<B (A부터 B미만. A포함, B 포함하지 않음)

단방향 범위 연산자 A... (A이상 A포함)

...A(A이하 A포함)

..<A(A미만 A포함하지 않음)

 

*불 연산자

NOT !B

AND A && B

OR A || B

 

불연산자와 비트연산자 구분해야함.

 

*비트 연산자

NOT ~A

AND A & B

OR A | B

XOR A^B

비트이동연산자 A>>B, A<<B A의 비트를 B만큼 비트를 시프트(이동)

 

*복합할당연산자

A+=B

A-=B

A*=B

A/=B

A%=B

 

*오버플로 연산자

오버플로 더하기 연산 &+

오버플로 빼기 연산 &-

오버플로 곱하기 연산 &*

 

*기타 연산자

nil 병합 연산자 A ?? B A가 nil이 아니면 반환하고, A가 nil이면 B를 반환.

부호변경 연산자 -A A(수)의 부호를 변경

옵셔널 강제 추출 연산자 O! O(옵셔널 개체)의 값을 강제로 추출

옵셔널 연산자 V? V(옵셔널 값)을 안전하게 추출하거나, V(데이터 타입)가 옵셔널임을 표현.

 

*사용자 정의 연산자

용어 정리

prefix 전위 연산자(앞에 붙음)

infix 중위 연산자 

postfix 후위연산자

operator 연산자

associativity 연산자 결합방향

precedence 우선순위

사용자 정의 연산자는 아스키문자 /  = + - ! * % < > & | ^ ?  ~ 결합해서 사용

마침표도 사용 가능 (다만 주의점: 연산자를 포함하는 문자 중 맨 처음의 문자가 마침표일 때만 연산자에 포함된 마침표가 연산자로 인식됨)

(예를 들어 .+. 로 사용 가능)

?물음표도 사용 가능하지만, 물음표 자체만으로는 안됨. ! 느낌표도 같은 조건으로 포함시킬 수 있음. 다만 전위 연산자는 ? 나 ! 로 시작하는 사용자 정의 연산자 정의 불가.

 

*전위 연산자 정의와 구현

** 에 대한 정의를 할건데 이건 Int 의 제곱으로 정의할거야~~ 를 아래처럼 표현.

prefix operator **

 

prefix func ** (value:Int) -> Int {

 return value * value

}

let minusFive: Int = -5

let sqrtMinusFive: Int = **minusFive

 

print(sqrtMinusFive) // 25

 

*후위 연산자 정의와 구현

하나의 피연산자에 전위 연산과 후위 연산을 한 줄에 사용하게 되면 -> 후위 연산을 먼저 수행.

 

*중위 연산자 정의와 구현

연산자 우선순위 그룹은 중위 연산자에서만 사용됨.

 

만약, 중위연산자를 정의할 때 우선순위 그룹을 명시해주지 않는다면 우선순위가 가장 높은 DefaultPrecedence그룹을 우선순위로 갖게됨.

 

만약 MultiplicationPrecedence라고 명시해주지 않는다면 DefaultPrecdence 그룹으로 자동 지정됨.

 

 

 

출처: 야곰 swift 문법책

'iOS > iOS Swift 문법' 카테고리의 다른 글

iOS swift 함수  (0) 2022.07.17
iOS swift 흐름제어  (0) 2022.07.16
iOS swift 열거형 enum , switch  (0) 2022.07.14
iOS swift <집단자료형> - 배열  (0) 2022.06.03
iOS swift 제어전달문 (4가지) / 구문레이블  (0) 2022.06.03