일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 디자인패턴
- 팩토리 메소드
- Observer Pattern
- 추상 팩토리
- 추상팩토리패턴
- 싱글톤
- ㅋㅁ
- a
- 코틀린
- 디자인패턴 #
- El
- Abstract Factory
- ㅓ
- 함수형프로그래밍
- 빌터패턴
- 프로토타입 패턴
- designPattern
- factory method
- builderPattern
- Singleton
- Functional Programming
- PrototypePattern
- Design Pattern
- 옵저버 패턴
- Kotlin
- F
- r
- Today
- Total
목록Coroutine/coroutineFlow (15)
오늘도 더 나은 코드를 작성하였습니까?
LiveData는 2017년에 우리에게 필요했던 것이었습니다. Observer pattern 은 우리가 코딩을 하는데 있어서 더 쉽게 만들어 주었지만, 당시에는 RxJava와 같은 옵션이 초보자에게 너무 복잡했습니다. Architecture Components 팀은 Android용으로 설계된 매우 독단적인 Observable 데이터 홀더 클래스인 LiveData를 만들었습니다. LiveData는 시작하기 쉽도록 단순하게 만들었고, RxJava와 LiveData사이의 통합을 활용하여 보다 복잡한 reactive streams의 경우 RxJava를 사용하는 것이 좋습니다. DeadData? LiveData는 여전히 Java 개발자, 초보자 및 간단한 상황을 위한 솔루션입니다. 이것을 제외한다면, Kotlin..
map - 기존 코틀린 collection 확장함수인 map 동일하다. - flow 값을 변환 시켜 보낸다. - 람다로 변환함수만 넘기면 알아서 전부 emit된다. suspend fun main() { val intFlow = (1..10).asFlow().map { it*it } intFlow.collect { int -> println(int) } } transFrom - map과 비슷하지만 단순 값의 변환 보다는 타입을 명식적으로 기재해 타입을 변환할때 사용한다. - 타입을 변환후 emit()사용하여 보낸다. suspend fun main() { val intFlow = (1..10).asFlow().transform { num -> val str = num.toString()+"번" emit(st..
Take - flow에서 특정 개수만 받을경우 사용한다. suspend fun main() { val alphabetFlow = ('a'..'z').asFlow().take(4) alphabetFlow.collect { alphabet -> println(alphabet) } } TakeWhile - flow의 첫번째 보내는 값이 조건을 만족하면 내보낸다. 즉, 조건에 맞는 첫번쨰 값을 내보내는것이 아니라, 첫번째 값이고 조건에 맞아야 한다. suspend fun main() { val intFlow = (1..10).asFlow().takeWhile{ num -> num.equals(1) } intFlow.collect { int -> println(int) } } Buffer( 생산자 소비자 한쪽/양..
combine - 2개 이상의 flow를 통합하여 새로운 flow를 생성할 수도 있다. - 모든 플로우의 emit이 완료될때까지 작동되어진다. - 작동 과정에서 최신기준의 데이터를 내보낸다. 결합되는 Flow 모두 최소 하나의 데이터를 방출한 경우에 첫 번째 결합 데이터가 방출되고, 이후로는 둘중 어느 하나 Flow 라도 데이터를 방출하면 모든 Flow의 최신 데이터를 결합하여 방출해준다. suspend fun main() { val charFlow = ('a'..'c').asFlow() val intFlow = flow { (1..5).forEach { delay(1000) emit(it) } } val stringFlow = charFlow.combine(intFlow) { int, char -> v..