- 구문 끝의 세미콜론은 옵션.

세미콜론을 사용하지 않는게 일반적. 한 줄에 두 개 이상의 구문 작성하는 경우 세미콜론 사용해서 구분.


- 문자열뿐만 아니라 문자도 큰따옴표 사용.



변수, 상수


변수 선언 : var + 변수명

상수 선언 : let + 상수명


반드시 타업 어노테이션을 사용해야 하는 경우 두가지

1. 선언과 초기화를 분리하는 경우


2. 타입 추론으로 얻어지는 타입이 아닌, 다른 타입을 직접 지정할 필요가 있을 때



타입이 다른 변수끼리는 결합되지 않는다.

- 숫자를 문자열로 변경할 시, 기존의 정수값이나 변수를 문자열 타입으로 바꾸는 것이 아니라,

새로운 문자열 인스턴스를 만드는 것.


문자열 템플릿 \(변수)



범위 연산자


1 ... 5

1 ..< 5

반대 방향으로는 사용할 수 없다. ( 1 >.. 5)


활용




반복문



루프 상수의 생략





조건문


guard


if 구문과의 차이점 : guard 구문에는 else 블록이 필수이지만, 표현식의 결과가 참일 때 실행되는 블록이 없음.


언제 사용하는가?


특정 조건을 만족하지 않은 채로 후속 코드를 실행하면 심각한 오류가 발생할 경우, 전체 구문을

조기 종료하기 위한 목적으로 사용됨. 따라서 guard 구문의 else 블록에는 이후의 코드 진행을

막아주는 구문이 반드시 포함되어야 함.



switch


- break가 없음. fallthrough 구문을 통해 다음 구문으로 이동 가능.

- default가 필수. 단 default 구문을 대신하여  모든 패턴을 매칭시킬 수 있는 구문이 존재하는 경우에    한하여 생략 가능.

- 숫자, 문자열, 튜플등 모두 가능.




옵셔널


"오류가 발생할 가능성"에 대한 값을 옵셔널 타입이라는 객체로 감싼 후 반환하는 개념.


위와 같은 경우 자바에서는 NumberFormatException() 예외를 발생하고 개발자는 이에 대해

대응하는 코드를 작성할 수 있음.

하지만 스위프트에서는 오류 대신 nil을 반환.

(참고로 일반 자료형에는 nil 값을 할당할 수 없음.)


타입 선언


일반 자료형을 선언만 하고 초기화하지 않으면 아무것도 할당되지 않지만 옵셔널인 경우에는

자동으로 nil로 초기화 됨. (해당 자료형이 아닌 옵셔널 타입 자체에 nil이 부여)



결과 : Optional(3)


옵셔널 강제 해제



결과 : 3


강제 해제 연산자를 사용할 때에는 먼저 옵셔널 값이 nil 인지 점검해야 하고 옵셔널 값이 nil이

아닐 때에만 강제 해제 연산자를 붙여서 값을 추출해야 한다.


옵셔널 값의 안전한 해제



옵셔널 바인딩

- 비강제적인 해제 구문. if 구문 내에서 조건식 대신 옵셔널 타입의 값을 일반 타입의 변수나 상수에

할당하는 방식.

- 반드시 조건문에서 사용해야 함.





컴파일러에 의한 자동 해제


옵셔널 타입와 일반 타입끼리는 연산 불가. 옵셔널을 해제해서 연산을 해줘야 한다.

단, 옵셔널 객체의 값을 비교 연산자를 사용하여 비교하는 경우에는 굳이 해제하지 않아도 됨.




묵시적 해제



결과값 : Swift Optional


- 옵셔널타입이므로 var str : String! = nil 도 가능.

- 묵시적 해제를 선언한 옵셔널은 일반타입과 연산도 가능함.


언제 사용하는가?

형식상 옵셔널로 정의해야 하지만, 실제로 사용할 때에는 절대 nil 값이 대입될 가능성이 없는 변수일 때 사용.



실제로 묵시적 옵셔널이 정말 유용하게 사용되는 경우는 클래스 또는 구조체 내에서. 주로 멤버 변수를 정의할 때.



- 꼼꼼한 재은 씨의 swift3 책의 내용중.

Posted by 윤연식
,