목록Swift (63)
study record
*이 글은 책 “스위프트 프로그래밍”을 읽고 작성한 글입니다. 스위프트의 where절은 특정 패턴과 결합하여 조건을 추가하는 역할을 한다. 조건을 더 추가하고 싶을 때, 특정 타입에 제한을 두고 싶을 때 등등 다양한 용도로 사용된다. where 절의 활용 where 절은 크게 두 가지 용도로 사용된다. 패턴과 결합하여 조건 추가 타입에 대한 제약 추가 다시 말해 특정 패턴에 Bool 타입 조건을 지정하거나 어떤 타입의 특정 프로토콜 준수 조건을 추가하는 등의 기능이 있다. // 값 바인딩, 와일드카드 패턴과 where 절의 활용 let tuples: [(Int, Int)] = [(1, 2), (1, -1), (1, 0), (0, 2)] for tuple in tuples { switch tuple { c..
* 이 글은 책 "스위프트 프로그래밍"을 읽고 작성한 글입니다. 스위프트에는 문법에 응용할 수 있는 다양한 종류의 패턴이 있다. 여러 패턴을 잘 숙지하면 스위프트 코드의 양을 줄이는 효과는 물론, 스위프트 문법을 좀 더 잘 활용할 수 있다. 패턴은 ‘단독 또는 복합 값의 구조를 나타내는 것’이고 패턴 매칭은 ‘코드에서 어떤 패턴의 형태를 찾아내는 행위’라고 할 수 있다. 쉽게 말해 이러이러한 것을 표현하고 싶다면 이러이러한 패턴을 통해 표현하면 된다고 이해하면 된다. 대부분의 패턴은 switch, if, guard, for 등의 키워드와 아주 친하며 두 개 이상의 키워드가 합을 이뤄 동작한다. 대부분의 패턴은 switch에서 강력하게 작용한다. 스위프트의 패턴은 크게 두 종류로 나뉜다. 값을 해체(추출)..
*이 글은 책 “스위프트 프로그래밍”을 읽고 작성한 글입니다. 스위프트에는 타입 내부에 타입을 정의하고 구현할 수 있다. 이처럼 타입 내부에 새로운 타입을 선언해준 것을 중첩 타입이라고 부른다. 중첩 데이터 타입 함수를 중첩해 사용했듯이 클래스 내부에 새 클래스, 클래스 내부에 새 구조체, 구조체 내부에 새 열거형 등의 타입을 중첩해서 타입 내부에 새 타입을 정의할 수 있다. class Person{ enum Job { case jobless, programmer, student } var job: Job = .jobless } Person 클래스 내부에는 중첩 데이터 타입으로 Job이라는 열거형 타입이 정의되어 있다. 중첩 데이터 타입을 사용할 때는 자신을 둘러싼 타입의 이름을 자신보다 앞에 적어줘야 ..
*이 글은 책 “스위프트 프로그래밍”을 읽고 작성된 글입니다. 객체지향 프로그래밍 패러다임에 기반을 둔 언어는 대부분 클래스의 상속을 사용해 타입에 공통된 기능을 구현한다. 그런데 스위프트의 표준 라이브러리에서 타입과 관련된 것은 대부분 구조체로 구현되어 있다. 상속이 되지 않는 구조체로 어떻게 다양한 공통 기능을 가질 수 있는지는 프로토콜, 익스텐션, 제네릭의 조화를 통해 이루어진다. 프로토콜 초기 구현 익스텐션은 기존 타입의 기능을 확장하고, 프로토콜은 프로토콜을 채택한 타입이 원하는 기능을 강제로 구현한다. 익스텐션과 프로토콜의 결합을 통해 중복 코드와 유지보수를 해결한다. 프로토콜을 정의할 때는 그 프로토콜을 채택한 타입에서 구현해주어야 하는 프로토콜의 요구사항을 구현할 수 없다. 단지 요구사항을..