*할당 연산자
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 |