일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- OOP
- 의존성
- IOS
- 클린소프트웨어
- 객체지향프로그래밍
- 개발자
- 네이밍
- fp
- Swfit
- SWIFT
- 이름
- DesignPattern
- CleanCode
- 함수형패러다임
- iOS프로그래밍
- 인터페이스
- 부스트코스
- 클린코드
- 고차함수
- 개발
- 함수형프로그래밍
- Solid
- 의도
- protocol
- 디자인패턴
- 아이폰프로그래밍
- POP
- interface
- 협업
- 문법
- Today
- Total
목록문법 (7)
밤에 쓴 코드
클로저 - Closures 클로저는 자신이 선언된 컨텍스트로부터 상수나 변수 저장하고, 붙잡아 둘수 있습니다. 클로저의 형태 전역함수는 이름을가진 클로저의 형태이고 , 값을 붙잡아 둘 수 없습니다. 중첩함수는 이름을 가진 클로저의 형태이고 , 자신을 가지고 있는 함수의 값을 붙잡아 둘 수 있습니다. 클로저표현식은 이름을 가지지 않은 클로저의 형태이고 , 자신 주위 컨텍스트의 값을 붙잡아 둘 수 있습니다. Closure Expression Syntax - 클로저 표현식 { (parameters) -> return type in statements } 정수형 배열을 문자열 배열로 변환하기 함수를 이용한 정렬 var numbers = [9,3,2,4,1,5,8,7,6,0] func asendingOrder(_..
Swift) POP - Protocol Oriented Programming 상속의 한계 상속의 계층 구조가 깊어질수록 복잡도가 올라간다. 값 타입 (ex - struct)는 상속이 불가능 프로퍼티 추가 불가능 추상화된 클래스를 구체화했을 때 공통적인 책임을 가지는 여러 클래스가 존재할 수 있고, 중복된 코드를 야기한다. *중복된 상황 - 억지로 만들어낸 예시 * class Bird{ // 모든 새가 날수있는건 아니어서 동작 추가 불가능 } class Owl : Bird { func fly(){ print("훨~ 훨~") } // 비행한다 - 중복 } } class Pigeon : Bird { func fly(){ print("훨~ 훨~") } // 비행한다 - 중복 } } class Penguin : ..
Swift) Extension 익스텐션 사용하는 이유 기존 타입의 기능확장 확장된 코드 영역은 비교적 side effect 에서 자유로움 기능별로 단위를 묶어서 표현하기 쉬움 특징 *열거형, 구조체, 클래스, 프로토콜 확장 가능 * 재정의는 불가능 연산프로퍼티 추가가능 상속과는 달리 수평적 기능 추가의 느낌이 있음 사용 예시 기존의 기본클래스(구조체)의 기능적 확장 extension Int{ func changeToString ->(String){ return "\(self)" } } Default Implement - 프로토콜 기본구현 protocol runable{ func run() } extension runable{ func run(){ print("뒤뚱뒤뚱") } } TypeAlias 와 함께..
Optional 변수에 값이 존재하지 않을 수도 있다는 것을 명시한다. 다른 말로 하면 옵셔널이 아닌 변수는 무조건 값을 가져야한다. 값이 꼭 필요한 변수에는 옵셔널이 아닌 타입으로 선언함으로서 , 사전에 nil이 들어오는 걸 막을 수 있다. 또 , Optional 로 선언함으로서 , nil이 들어올 수 있으니 , 대처가 필요하다는 것을 프로그래머에게 인지 시켜줄 수 도 있다. Optional 은 제네릭 타입을 지원하는 열거형이다. enum Optional{ case .some // 값이 존재하는 경우 case .none // nil 인 경우 } Optional = Int? // 동일한 표현이다 optional 은 .some/.none 두가지경우 중 하나를 를 무조건적으로 가지는 열거형 이다. Optio..
프로토콜 위키백과 통신 프로토콜은 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 **규칙 의 체계이다.** 예시 swift 프로토콜은 규칙을 표현한다는 점에서 비슷하지만 조금 다른 의미로 사용된다. 내가 좋아하는 yagom 은 명찰,공고 를 통해 이야기를 해주었다. 프로토콜은 일종의 명찰이다 . 어떤 클래스(구조체)가 특정 프로토콜을 채택하게되면 프로토콜이 요구하는 사항들을 준수해야한다. 따라서 특정프로토콜을 구현한 클래스를 통해 생성된 오브젝트는 해당 프로토콜에서 요구되는 능력들을 수행할 수 있음을 신뢰할 수 있다. struct Patient { let helper : Any } let 부엉이 = String() let 환자 = Patient(helper: 부엉이)한 환자가 있습니다. ..
Struct : 구조체 struct Cat{ // 속성 let name : String var age : UInt // 실체화 init(name:String , age:UInt = 1){ self.name = name } // 동작 func howl(){ print(name+" 야옹") } } 객체를 만들기위해 추상화되어있는 점에서 class와 유사합니다. 유사한 두개가 존재한다는 것은 유사하지만 차이가 있고 , 각기 다른 목적으로 설계 되었다는 것을 의미합니다. 특징적인 차이 class에서는 가능하지만struct에서는 가능하지 않은 것 상속 타입캐스팅 참조에 의한 전달 stack CPU가 스택 메모리를 효율적으로 구성하기 때문에 스택 변수를 읽고 쓰는 속도가 매우 빠릅니다. 스택에 저장할 수있는 변수의..
enum switch 구문을 사용시 수 많은 값이 입력될수 있음을 예측한다. enum을 이용하면 더 적은 사항을 컴퓨터가 고려할 수 있습니다. 하나로 연관된 주제를 하나의 타입으로 묶어서 사용 조금더 안전한 방식으로 다룰 수 있게 해준다. 상황 제한된 값 만 입력받고 싶을 때 제한된 값만 선택할수 있게 제한하고싶을 때 예시 // 열거형 : rawValue enum Unit : String { case cm = "cm" case m = "m" case inch = "inch" case yard = "yard" case g = "g" case kg = "kg" case oz = "oz" case lb = "lb" // 함수도 내포할수 있다 func defaultUnit ()->Unit{ switch self..