본문 바로가기

IT/kotlin

[Flow] Flow combine 에러시 미동작 관련 내부 동작 실제 두개의 액션을 실행시켜 동작시throw 즉 에러를 강제로 던지거나 예외사항이 발생했을때downStream으로 가지 않는 이슈가 있었다.combine( action1(query), action2(query)) { action1, action2 -> action1 to action2}.collect { entity -> ...} catch를 통해 upStream에 대한 예외처리를 하면 되지만 왜 그런지 내부를 살펴보자.  실제 combine 내부의 동작을 보면  내부에 result 액션에 대한 동작을 channel을 통해 가져와 동작시키게 되어있지만,결과 액션 이후 result를 transform 하여 변경된 응답값을 뱉는 과정을 타야하지만실제 while문 내부 resultChanne..
[flow] coroutine flow 문서 읽기 -2 안녕하세요 남갯입니다. https://developer.android.com/kotlin/flow/stateflow-and-sharedflow?hl=ko StateFlow 및 SharedFlow | Android 개발자 | Android Developers StateFlow 및 SharedFlow StateFlow와 SharedFlow는 흐름에서 최적으로 상태 업데이트를 내보내고 여러 소비자에게 값을 내보낼 수 있는 Flow API입니다. StateFlow StateFlow는 현재 상태와 새로운 상태 업데이트를 developer.android.com StateFlow StateFlow는 현재상태와 새로운 상태를 업데이트 수집하는 관찰 가능한 상태 홀더 flow입니다. 상태를 업데이트를 하기 위해서는 Mu..
[flow] coroutine flow 문서 읽기 -1 안녕하세요 남갯입니다. 오늘은 Coroutine flow 문서를 읽어볼 예정입니다. https://developer.android.com/kotlin/flow?hl=ko Flow란? flow는 기존 단일값만 반환하는 정지함수와는 달리 여러값을 순차적으로 보낼수 있는 유형입니다. 기존 Rx를 사용해보셨다면 비슷한 개념으로 이해할 수 있을것 같은데요. 코루틴기반으로 빌드되며, 여러값을 제공할 수 있는 데이터스트림의 개념입니다. Flow의 데이터 스트림 Flow의 데이터 스트림에는 3가지의 항목이 존재합니다. 1. 생산자 : 스트림에 추가되는 데이터를 생산합니다. 코루틴 덕분에 흐름을 비동기적으로 데이터가 생산 가능 2. 중개자(선택사항) : 스트림에 내보내는 값을 수정 가능 3. 소비자 : 스트림에서 받아온..
[코틀린] 코틀린 제너릭 안녕하세요 남갯입니다. 오늘은 저번에 정리한 변성에 대해 이해가 부족한것 같아 코틀린 인 액션의 제너릭에 대해서 정리해보고 블로깅을 해보려고합니다, 제너릭스 타입 소거로 인해 실행시점에서 제너릭의 클래스의 인스턴스의 타입인자 정보가 들어가 있지 않다.JAVA의 JVM 제너릭스는 타입소거를 이용해서 구현된다. 이는 실행시점에 제너릭 클래스의 인스턴스의 타입 인자 정보가 들어있지 않다.컴파일러는 List와 List을 서로 다른타입이라 인식하지만 실행시점에서의 둘은 완전히 같은 타입의 객체이다.따라서 문자열로 이루어진 List이 어떤 타입을 가진 리스트인지 실행시점에는 검사할 수 없음. 따라서 if(value is List)을 실행시점에는 알 수 없음. List인지의 여부는 확실하게 알수있지만 타입을 알 수없..
[코틀린] kapt 안녕하세요 남갯입니다. https://pluu.github.io/blog/kotlin/2017/07/23/kotlin-generatestubs/ kapt란? kapt Annotation Processing for kotlin 는 코틀린이 자바파일의 Annotation 처리시 Kotlin 파일의 Annotation 처리를 포함합니다.1. javac 보다 먼저 kotlinc가 동작합니다.2. kotlin 바이너리 파일은 javac 컴파일 대상이 됩니다.3.그러나 javac는 Annotation이 부여된 Kotlin 파일까지 자동으로 포함시키는 기구는 없습니다. 데이터 바인딩을 이용할때 BindingAdapter라는 annotation을 작성하게 되는데 kotlin의 annotation을 동작시키기 위해서는 ..
[코틀린] let, with, run, also, apply 정리 안녕하세요 남갯입니다. run과 let 등등 대충의 쓰임새만 알고 있고 따로 물어보면 사용처에 대한 정리가 되어 있지 않아 정리를 못했던거같은데 에서 다시 정리해서 포스팅해보려고 작성했습니다. with run 둘다 this1. with는 입력하는 객체가 따로 필요없을때2. run은 nullable일때 ex ) with(person){ this?.name this?.age } person?.run{ this.name this.age } let run let은 it run은 this다중문을 사용했을때 혹은 this가 모호할때let을 사용 it말고 이름을 지정함으로써let{ a1 -> a1.let { a2-> //todo } } also letalso 객체 자체의 동일한 내용 이용하고 싶을때 "abc".let..
[Kotlin] 코틀린 확장 함수 (Kotlin extension functions) 예제 및 정리 안녕하세요 YTS 입니다. 오늘은 코틀린에 확장 함수 (Kotlin extension functions)! 에 대해 알아보려고합니다. 당연히! 이 글을 쓴다는거 자체가 확장함수를 지원한다는 얘기겠죠? 우선 전체적으로 공개하는 확장 함수부터 알아볼까요? 1.Kotlin 파일을 생성합니다! class 파일이 아닌 코틀린 파일로 생성해주세요! 저는 extenstion 이라는 패키지 밑에 파일을 생성했어요! 2. 확장 함수를 구현해주세요! package com.yts.healing.extension import android.content.Context import android.view.inputmethod.InputMethodManager import android.widget.Toast import and..
[드로이드나이츠] 뱅크샐러드 코틀린던전 2, 3번문제 안녕하세요 남갯입니다 오늘은 드로이드나이츠에서 나온 뱅크샐러드의 코틀린던전 2번 3번문제를 풀어보려합니다. 2번문제는 되게 어려웠습니다.실제로 확인하는데는 엄청 어려웠습니다. listof일단 listof에 대해 확인해보면listof는 emptyList 혹은 elements.asList를 통해 결과값을 반환합니다. List타입을 반환하게 되죠asListemptyList위의 두 반환타입을 보면 List타입을 반환하게 되는데 즉 List라는 immutable한 타입을 반환하게 됩니다. arratListOf반환타입이 ArrayList를 반환하게 됩니다. List, MutableList , ArrayList 살펴보기ListMutableListArratListList는 Collection을 상속받았고 Mutable..