Apple 제공 Swift 프로그래밍 가이드(3.1)의 Advanced Operators 부분을 공부하며 정리한 글입니다. 개인적인 생각도 조금 들어가있습니다. 들어가며Swift는 복잡한 연산을 위한 몇 가지 고급 연산자들을 제공한다. 예를들면 bitwise 와 bit shifting 연산자들이다.C의 산술 연산자와 다르게 Swift의 산술 연산자는 오버플로우가 되지 않는다. 오버플로우가 될 만한 상황이면 에러를 뱉어낸다. 산술 연산에서의 오버플로우를 굳이 사용하고 싶다면 Swift의 산술 연산자 second set을 사용하도록 하자. 기본 산술 연산자 앞에 & 기호를 붙이는 방식인데, 예를들어 덧셈에서의 오버플로우를 허용하고 싶다면 &+ 연산자 (overflow addition operator 라고 부..
Apple 제공 Swift 프로그래밍 가이드(3.1)의 Access Control 부분을 공부하며 정리한 글입니다. 개인적인 생각도 조금 들어가있습니다. 들어가며Access control 을 이용하면 다른 소스파일/모듈에 있는 코드에서 자신의 코드에 접근하는 범위를 제한할 수 있다. 자신의 코드 구현부를 숨기거나, 외부에서 사용할 인터페이스를 확실하게 지정하고 싶을 때 유용하다.Access level 을 클래스, 구조체, ENUM 등의 타입에 각각 구체적으로 지정할 수 있으며, 타입 안에 속한 프로퍼티, 메서드, 이니셜라이저, 서브스크립트에까지도 지정할 수 있다. 프로토콜은 특정 컨텍스트(전역 상수, 변수, 함수 등)로 제한될 수 있다.Default access level이 제공된다. 따라서 만약 단일 ..
Apple 제공 Swift 프로그래밍 가이드(3.0.1)의 Generics 부분을 공부하며 정리한 글입니다. 개인적인 생각도 조금 들어가있습니다. 들어가며제네릭을 이용하면 특정 타입에 종속되지 않는 / 유연하고 / 재사용성 높고 / 명확한 의도를 가진 함수를 작성할 수 있다.제네릭은 Swift의 powerful feature대부분의 Swift 기본 라이브러리는 제네릭 코드를 내장한다사실 Array와 Dictionary 타입도 제네릭 콜렉션Array에는 Int도, String도, 커스텀 타입도, 그리고 이것들을 전부 포함할 수 있는 Any 타입도 넣을 수 있다. 넣을 수 있는 타입에는 제한이 없다. Array가 제네릭 콜렉션이기 때문에 이런 게 가능한 것이다. 제네릭으로 해결할 수 있는 문제The Prob..