1. sequence 1.2.4.8.16 쭉쭉 출력된다. 시퀀스의 첫 번째 Element는 항상 첫 번째 Element이며 각 연속되는 Element는 이전 Element에 next를 호출한 결과이다. next는 nil을 반환 할 때 시퀀스가 끝난다. next가 만약 nil을 반환하지 않으면 무한대로 ... 간다. 2. stride 두 수 사이에 구간을 만든다. 시퀀스 ! 3...2...1...이 출력된다. // from 3부터 to 0까지 by -1씩 3. swap 두 개를 교환한다. x는 100이고 y는 -100인데 swap해주게되면, x는 -100이되고 y는 100이된다. 그러므로 x,y는 variable이여야한다.
스위프트 .... 깊고도 깊은 .... 언어의 세계 Swift 공식 문서에 function리스트가 있길래 정리해보자 // https://swiftdoc.org/ 1. abs absolute value 절대 값 ! -100 을 100으로 2. assert - assert(, ) 위에서 사용한 x,y 변수를 사용했다. x = -100, y = 100 인 상태에서 assert( x == -100, "x가 -100이 아니다!")라고 작성한다. x == -100 이라는 조건에 만족하기 때문에 그냥 넘어간다. x를 100으로 변경하고 assert( x == -100, "x가 -100이 아니다!")를 실행한다. 그러면 Assertion failed메시지 x가 -100이 아니다 ! 가 뜬다. x == -100 이라는 ..
Swfit의 Shuffle( ) "Use the shuffle() method to randomly reorder the elements of an array."shuffle()은 배열의 순서를 랜덤화 하는 함수입니다. 시간 복잡도는 O(n)이네요. WWDC2018 Generic을보다가 shuffle()이 어떻게 구현되었는지 언급이 되길래 정리하고자 합니다. 사용된 fisher yates shuffle 알고리즘은 오래된 알고리즘입니다. 위에서 shuffle()은 배열을 랜덤화 할때 사용하는 함수라고 했으니array.shuffle()을 해주고 print를 찍어보면 잘 섞여서 나오는걸 확인할 수 있습니다.위 print문이 어떻게 찍혔는지 과정을 살펴봅시다.먼저 컬렉션의 첫 번째 요소에 대한 인덱스부터 시작합..
스위프트4.2 버전에서 나왔던 removeAll이랑 기존에 있던 filter는 비슷한 역할을 합니다. removeAll(where: ) method that performs a high-performance, in-place filter for collections.You give it closure condition to run, and it will strip out all objects that match the condition. 즉 removeAll(where: ) 메서드는 컬렉션에 대해서 고성능인 in-place filter를 수행합니다. 클로저에 필요한 조건을 주고 조건에 일치하는 모든 객체들을 제거할 것입니다. 여기서 in-place는 그 자리에서라는 의미로 removeAll을 하게 되면 ..
알고리즘 문제를 풀다가 String 과 Int를 결합할 일이 생겨서 zip을 사용해서 문제를 풀었습니다. 항상 같은 사이즈를 가지고 zip 했었는데 사이즈가 다른 것을 zip하면 어떻게 되는지 궁금했습니다. 스위프트 공식 문서를 보면 zip은 Creates a sequence of pairs built out of two underlying sequences. 두 개의 시퀀스로 구성된 것을 가지고 시퀀스쌍을 만듭니다. 라고 정의 내려져 있습니다. func zip(_ sequence1: Sequence1, _ sequence2: Sequence2) -> Zip2Sequence where Sequence1 : Sequence, Sequence2 : Sequence 먼저 두 개의 파라미터가 필요합니다. seq..
배열을 변환해야 할 때 맵을 많이 사용합니다. map은 매개변수로 전달된 함수를 실행하고 실행된 배열을 반환해주는 함수입니다. 배열 , 딕셔너리, 세트 등에서 map을 사용할 수 있습니다. 공식 문서를 살펴보면func map(_ transform: (Element) throws -> T) rethrows -> [T]여기서 transform 은 매핑클로저로 시퀀스의 요소를 매개변수로 받아들이고 동일하거나 다른 유형의 변환된 값을 반환합니다. let cast = ["Vivien", "Marlon", "Kim", "Karl"] let lowercaseNames = cast.map { $0.lowercased() } 예제를 살펴보면 cast는 [String]으로 이루어져 있습니다. cast.map { $0.lo..
스위프트의 함수는 오버라이드와 오버로드를 모두 지원합니다. 먼저 오버로딩이란- 같은 이름의 함수를 여러 개 정의하고 매개변수를 다르게 해 다양한 유형에 호출에 응답 가능하게 합니다.오버라이딩이란- 상속 관계에 있는 클래스의 이미 정의된 메소드를 재정의 해 특정한 형태로 구현 가능합니다. 스위프트에서 매개변수의 타입이 다르면 같은 이름의 함수를 여러개 만들 수 있습니다. 또한 같은 이름의 함수여도 매개변수의 개수가 달라도 함수를 만들 수 있습니다. 위와 같은 방법은 매개변수 이름 (ex: naming , age) 지정해 함수를 선언했습니다. + 스위프트에서는 매개변수 이름과 더불어 전달인자 레이블을 지정해줄 수 있습니다. 보통의 경우는 위와 같이 매개변수의 이름을 전달인자 레이블과 같은 이름으로 사용합니다..
- Total
- Today
- Yesterday
- ARC
- wwdc
- leetcode
- objective-c
- 알고리즘
- Deep learning
- objc
- swift5
- iOS SwiftUI
- 머신러닝
- string
- 스위프트UI
- ReactiveX
- 책 추천
- 문자열
- swiftUI
- 애니메이션
- Algorithm
- 책
- rxswift
- Xcode
- SWIFT
- ios
- Animation
- RX
- 책 후기
- stanford SwiftUI
- 독서
- 스위프트
- 딥러닝
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |