야곰의 스위프트 프로그래밍 - 스위프트 기초
스위프트 기초
연산자
사용자 정의 연산자
토큰으로 사용되는 =, ->, //, /*, */
등과 전위 연산자 <, &, ?
, 중위 연산자 ?
, 후위 연산자 >, !, ?
등은 Swift에서 예약한 상태이므로 재정의할 수 없으며 사용자 정의 연산자로 사용될 수 앖다.
전위 연산자 정의와 구현
prefix operator ** |
후위 연산자 정의와 구현
postfix operator ** |
중위 연산자 정의와 구현
중위 연산자는 우선순위 그룹precedenceGroup을 명시해줄 수 있음
precedenceGroup 우선순위_그룹_이름 { |
Swift에 정의된 우선순위 그룹이 있음.
infix operator **: MultiplicationPrecedence |
아래 순서대로 낮은 우선순위를 가짐.
우선순위를 지정하지 않으면 DefaultPrecendence
를 가지며, 이는 TernaryPrecenecne
보다 높은 우선순위르 갖는다.
BitwiseShiftPrecedence
<<
,>>
와 같은 비트와이즈 쉬프트 연산자
MultiplicationPrecedence
*
,/
,%
와 같은 곱셈 관련 연산자
AdditionPrecedence
+
,-
와 같은 덧셈 관련 연산자
RangeFormationPrecedence
..<
,...
와 같은 범위를 만드는 연산자
CastingPrecedence
is
,as
와 같은 캐스팅 연산자
NilCoalescingPrecedence
??
연산자
ComparisonPrecedence
<
,>=
,==
와 같은 비교 연산자
LogicalConjunctionPrecedence
&&
,||
와 같은 논리 연산자
TernaryPrecedence
?:
와 같은 삼항 연산자
AssignmentPrecedence
=
,*=
와 같은 할당 연산자
함수
종료되지 않는 함수
비반환 함수(메소드)는 반환 타입을 Never
로 명시해준다.
func crash() -> Never { |
옵셔널
- 옵셔널은 열거형으로 구현되어 있음! 그러므로
switch
문으로some
과none
인 케이스에 접근할 수 있으나 일반적을 옵셔널 바인딩 등의 방법을 활용한다. - 함수의 매개 변수 타입이 옵셔널이면, 매개 변수 기본값이
nil
이 아니어도 함수 호출 시 그 부분에 아무런 값을 주지 않아도nil
이 들어올 것임을 알아야 한다.