일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 디자인패턴
- 추상 팩토리
- Abstract Factory
- 싱글톤
- builderPattern
- 디자인패턴 #
- a
- Design Pattern
- designPattern
- El
- F
- 팩토리 메소드
- 옵저버 패턴
- 추상팩토리패턴
- ㅓ
- ㅋㅁ
- PrototypePattern
- Singleton
- Kotlin
- 함수형프로그래밍
- r
- 코틀린
- Functional Programming
- factory method
- 프로토타입 패턴
- 빌터패턴
- Observer Pattern
- Today
- Total
목록Coroutine (24)
오늘도 더 나은 코드를 작성하였습니까?
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..
stateflow - Observable하며 state를 지니고 있다. - StateFlow는 최신 및 새로운 state가 생성된 경우에만 반환하고 동일한 state는 반환하지 않는다. - flow는 일반적으로 cold stream(터미널 연산자가 실행시 생산자를 실행시킴), StateFlow는 hot stream입니다. 즉 일반 Flow는 최신의 state를 보유 할 수 없으며 터미널 연산자가 실행시 활성화 되는 반면 StateFlow는 최신의 state를 보유 할 수 있으며 생성하자마자 상태를 보유하며, 그렇기 때문에 반드시 초기값이 필요로한다. StateFlow는 ConflatedBoradcastChannel을 대체하기 위해 설계되었습니다. StateFlow는 기본 콘셉트로 distinctUntil..
onClick에서 호출된 핸들러에서 네트워크 호출을 실행하는 로직이 삭제되고 growZone에서 구동됩니다. 그러면 단일 소스 저장소(SSOT)를 만들어 코드 중복을 방지할 수 있습니다. 어떤 코드도 캐시 새로고침 없이 필터를 변경할 수 없습니다. private val growZoneFlow = MutableStateFlow(NoGrowZone) init { clearGrowZoneNumber() growZoneFlow.mapLatest { growZone -> _spinner.value = true if (growZone == NoGrowZone) { plantRepository.tryUpdateRecentPlantsCache() } else { plantRepository.tryUpdateRecent..
Flow의 가장 흥미로운 기능 중 하나는 suspend 함수를 최고 수준으로 지원한다는 점입니다. flow 빌더와 거의 모든 transform은 정지 함수를 호출할 수 있는 suspend 연산자를 노출합니다. 따라서 네트워크 및 데이터베이스 호출에 관한 기본 안전성이 보장될 뿐만 아니라 flow내에서 일반 정지 함수 호출을 사용하여 여러 비동기 작업을 조정할 수도 있습니다. 실제로, 선언적 transform을 명령 코드와 자연스럽게 혼합할 수 있습니다. 예에서 볼 수 있듯이 추가 변환을 적용하지 않고 일반 map 연산자 내부에서 여러 비동기 작업을 조정할 수 있습니다. 많은 사례에서 이 방법을 사용하면 완전한 선언적 접근 방식보다 코드가 훨씬 더 단순해질 수 있습니다. Flow를 시작할 때 suspend..