[시작] - 패턴에 익숙해지면 코드의 양을 줄이면서 문법을 더 잘 활용할 수 있게 된다. - 패턴 : 단독 또는 복합 값의 구조를 나타내는 것 - 패턴 매칭 : 코드에서 어떤 패턴의 형태를 찾아내는 행위- 대부분의 패턴은 switch, if, guard, for 등의 키워드와 함께, 두 개 이상의 키워드가 합을 이루어 동작한다. - 크게 두 종류로 나눌 수 있다. : 값을 해체(추출)하거나 무시하는 패턴 | 와일드카드 / 식별자 / 값 바인딩 / 튜플 패턴 : 패턴 매칭을 위한 패턴 | 열거형 케이스/ 옵셔널 / 표현 / 타입캐스팅 패턴 [와일드카드 패턴] - 와일드카드 식별자(_, underscore)를 사용하여 '이 자리에 무엇이 오든지간에 상관하지 마라'는 뜻을 알림 : 와일드카드 식별자가 위치한 ..
[시작] - 특정 데이터 타입을 하나의 클래스나 구조체 안에 구현할 수 있다. -> 중첩 타입 : 클래스나 구조체 내부에 열거형을 선언하여 자신의 내부에서만 사용할 수 있게. : 외부와의 혼선을 피하기 위해.- 타입 내부에 새로운 타입을 정의하고 싶다면, 자신의 정의 내부에 새로운 타입을 정의하고 구현하면 된다. [중첩 데이터 타입] class Person { enum Job { case none case planner case designer case developer } var job: Job = .none } class Developer: Person { enum Platform { case android case ios case web } var platform: Platform init(_ pl..
[시작] - 스위프트의 표준 라이브러리에서 타입과 관련된 부분은 대부분 클래스가 아닌 구조체로 구현됨 - 프로토콜, 익스텐션, 제네릭 등을 활용하여 상속을 받지 못하는 구조체로 다양한 공통 기능을 구현함 [프로토콜 초기 구현] - 프로토콜 지향 프로그래밍의 핵심 개념- 프로토콜을 익스텐션에서 구현함 : 저장 프로퍼티는 익스텐션에서 구현할 수 없으므로 각각의 타입에서 직접 구현해야 함- 프로토콜 초기 구현 : 프로토콜의 요구사항을 익스텐션을 통해 구현하는 것.- 익스텐션에서 구현한 기능을 사용하고 싶지 않다면 각각의 타입에서 재정의하면 된다. protocol SelfPrintable { func printSelf()}extension SelfPrintable where Self: Container { fu..
[시작] - 타입에 유용하게 대응하기 위한 기능 - 재사용하기 쉽고 코드의 중복을 줄일 수 있음- 깔끔하고 추상적인 표현이 가능함 제네릭을 사용하고자 하는 타입 이름 제네릭을 사용하고자 하는 함수 이름(함수 매개변수...) - 제네릭을 사용하지 않고 Any 타입으로 함수를 만들었을 때 발생할 수 있는 문제 : Swift는 강타입 언어이므로 Any 타입으로 함수를 만들었으면 Any 타입만 함수에 들어갈 수 있다. 매개변수를 Any타입으로 바꾸어주어야 하는 과정이 불필요하게 추가되는 것이다. [제네릭 함수] func swapValues(_ first: inout T, _ second: inout T) { let temp: T = first first = second second = temp} var a: I..
원문 : https://medium.com/refactoring-ui/7-practical-tips-for-cheating-at-design-40c736799886 디자인에서 쓸만한 일곱 가지 실용적인 편법들 재능 대신 전략으로 디자인 향상시키기 모든 웹 개발자들은 싫든 좋든간에 필연적으로 시각적인 디자인 결정을 내릴 필요가 있는 상황에 처하게 됩니다. 아마 당신이 일하고 있는 회사는 정규직 디자이너가 없을 수 있고 스스로 새로운 기능을 위한 UI를 구현할 필요가 있을 것입니다. 또는 사이드 프로젝트에 참여하고 있고 다른 부트스트랩 사이트들보다 좋아보이게 만들고 싶을 것입니다. "나는 이렇게 좋아보이는 디자인을 절대 만들 수 없을 것입니다. 나는 예술가가 아니니까!" 라고 손들어 말하기 쉬우나, 그래픽 ..