일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Protocol
- 스위프트
- 애니메이션
- combine
- ios
- tableView
- MVVM
- Refactoring
- swiftUI
- 클린 코드
- Clean Code
- 리팩토링
- clean architecture
- SWIFT
- swift documentation
- UITextView
- Human interface guide
- collectionview
- RxCocoa
- HIG
- ribs
- rxswift
- Xcode
- uiscrollview
- uitableview
- UICollectionView
- Observable
- map
- 리펙토링
- 리펙터링
- Today
- Total
목록reduce (7)
김종권의 iOS 앱 개발 알아가기
결합 연산자2차원 배열을 1차원 배열로 만들 때, 3가지의 연산자 사용이 가능var a = [[1, 2], [3], [4, 5]]let a_1 = a.flatMap { $0 }let a_2 = a.reduce([], +)let a_3 = Array(a.joined())// [1, 2, 3, 4, 5]하지만 여기서 reduce 연산자를 사용하면 O(n^2)의 비용이 들고 flatMap, joined를 사용하면 O(n) 비용이 들기때문에 reduce를 지양할 것reduce를 사용했을때 O(n^2) 비용이 드는 이유3*3 배열일때 예시var b = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]초기 상태 = []첫번째 배열 순회하면서 append: [[1, 2, 3]]누적 연산 카운트: 3두번째 ..
문자열 합치는 방법대표적으로 joined와 reduce가 존재joined는 String 배열일 때 separator를 넣어주면서 합쳐주는 기능extension Array where Element == String { public func joined(separator: String = "") -> String}reduce는 collection type으로 정의되어 있고 컬렉션을 iteration하면서 합쳐주는 기능@frozen public struct Array { @inlinable public func reduce(_ initialResult: Result, _ nextPartialResult: (Result, Element) throws -> Result) rethrows ..
1. Higher order function (고차함수) 직접 구현 방법 - map, filter, reduce 2. Higher order function (고차함수) 직접 구현 방법 - flatMap, compactMap Map, Filter, Reduce map, filter, reduce는 higher order function (고차함수) higher order function이란? 다음 두 가지 중 하나에 해당 하나 이상의 함수를 인자로 받는 것 함수를 결과로 리턴하는것 Map 주어진 Element 하나하나씩 접근하여 클로저로 넘겨준 함수 (higher order function)에 맵핑하여 새로운 타입을 반환 [1,2,3].map { print($0) } 구현 방법 extension Arra..
목차) Combine - 목차 링크 Reduce 배열과 같은 Sequence형태를 하나의 값이나 축소 시키는 연산자 collect 연산자 collect(n)이면 n 만큼 묶어서 방출 (0...10).publisher .collect(5) .sink { print($0) } /* [0, 1, 2, 3, 4] [5, 6, 7, 8, 9] [10] */ ignoreOutput() 값이 방출되는 값은 모두 무시하고 completion의 failure만 방출 struct NoZeroValuesAllowedError: Error {} let numbers = [1, 2, 3, 4, 5, 0, 6, 7, 8, 9] numbers.publisher .tryFilter({ anInt in guard anInt != 0 ..
고차함수 (Higher order function) 인수로 함수를 받는다 or 함수를 결과로 반환한다 func myFunc(argFunc: Void -> ()) -> someFunc { } 고차함수를 사용하면 유연하고 반복을 줄일 수 있는 장점이 존재하여, Collection 관련 연산을 할때 되도록 고차함수 사용을 지향 swift의 대표적인 고차함수 인수로 함수를 받는 형태 대표적인 4가지 sorted func sorted(by areInIncreasingOrder: (Element, Element) throws -> Bool) rethrows -> [Element] filter func filter(_ isIncluded: (Element) throws -> Bool) rethrows -> [Elem..
알고리즘 핵심: https://ios-development.tistory.com/525 swift로 알고리즘 접근 코드의 간결화를 위해 강제 unwraping 사용 string타입에서 특정 character접근 시 [Charactor] or [String] 타입으로 변환하여 효율적으로 접근 String타입에서 특정 character 접근 시 O(N) Array타입은 random access O(1) String의 for문에서 value값은 String.Element형 :(for문 안에서 Int형으로 변경하고 싶은 경우, String으로 먼저 변형) swift는 Array, Set, Dictionary 세 가지 collection을 제공하므로 나머지 세 가지에 대해 어떻게 쓸것인지 미리 고민 Heap: S..
1. 고차함수(Higher-order function)란? 하나 이상의 함수를 인자로 취하거나 함수를 반환하는 함수를 의미 - higher order function: 함수 내부에서 일어나는 특성 (함수를 인수로 받는 것, 함수를 리턴하는 것) - first class: 함수 외부에서 일어나는 특성 (함수를 변수에 대입 가능한 것) ex) 배열에서 각 원소들을 접근하여 새로운 값을 생성하거나(map), 조건을 정하여 그 조건에 맞는 원소만 접근하거나(filter), 배열을 하나의 값으로 표현하거나(reduce) 2. swift의 대표적인 고차함수 1) Map 콜렉션 내부의 기존 데이터를 변형(transform)하여 새로운 콜렉션 생성 * 아래 예제를 map을 이용해서 for문 없이 표현하면? let ar..