Flow의 기본적인 최종 연산자 알아보기(Terminal operator)
·
Study/Kotlin
이전 글에서는 단순히 Flow를 만들어보았다. 이제 Flow에서 방출하는 값을 어떻게 가져올 수 있는지 그 방법에 대해 살펴보자. Flow 만들어보기다짜고짜 Flow를 만들어본다는 게 무슨 의미일까? fun main() { val flow = flow { println("Emit first value") emit(1) delay(100) println("Emit second value") emit(2) }}이렇게 Flow를 만들면 과연 나는 이 print문을 콘솔에서 확인할 수 있을까? 정답은 '아니다'이다. 간단히 생각해봤을때 이미 delay, emit 함수는 suspend function으로 코루틴 내부에서 실행되어..
Flow 만들어보기(feat. Flow builder)
·
Study/Kotlin
이번 글에서는 Flow builder를 사용해 Flow를 만들어본다. flowOf 사용하기첫번째는 flowOf라는 함수를 사용해 Flow를 생성해보겠다. val flow1 = flowOf()val flow2 = flowOf(1, 2, 3)흔히 MutableList를 만드는 방식과 매우 유사하다. 어떤 값을 넣지 않으면 제네릭으로 타입을 명시해주어야 하고,값을 넣게 된다면 타입을 명시하지 않아도 컴파일러가 자동으로 감지한다. asFlow 사용하기두번째로는 asFlow라는 함수를 사용하는 방법이다. listOf("a", "b", "c").asFlow()asFlow 함수는 Iterable, Sequence 등의 확장 함수로 선언되어 있다. flow 람다 사용하기마지막으로는 flow 람다를 사용하는 방법이다..
Flow 개념 살펴보기
·
Study/Kotlin
이번 예시는 팩토리얼 계산 함수를 사용할 예정이다. 일반적 함수 구현fun main() { val result = calculateFactorial(5) println("result: $result")}private fun calculateFactorial(num: Int): BigInteger { var factorial = BigInteger.ONE for (i in 1 .. num) { Thread.sleep(10) factorial = factorial.multiply(BigInteger.valueOf(i.toLong())) } return factorial}이렇게 작성된 함수에서는 계산 결과만 받을 수 있다. 그렇다면 계산 과정은 어떻게 ..