KOTLIN · 비동기
Flow 연산자 (Flow Operators)
Flow의 중간 연산자를 활용하여 비동기 데이터 스트림을 변환합니다. map, filter, transform, debounce 등을 다룹니다.
비동기중급flowoperatorsmapfiltertransform
핵심 설명
Flow의 중간 연산자를 활용하여 비동기 데이터 스트림을 변환합니다. map, filter, transform, debounce 등을 다룹니다.
Kotlin code
import kotlinx.coroutines.*
import kotlinx.coroutines.flow.*
fun sensorReadings(): Flow<Int> = flow {
val values = listOf(20, 25, 22, 35, 18, 40, 22)
for (v in values) {
delay(100)
emit(v)
}
}
fun main() = runBlocking {
// map + filter
sensorReadings()
.filter { it > 20 }
.map { "온도: ${it}°C" }
.collect { println(it) }
println("---")
// transform: 여러 값 방출 가능
sensorReadings()
.transform { value ->
emit(value)
if (value > 30) emit(-1) // 경고 신호
}
.collect { println(it) }
println("---")
// take, drop
sensorReadings()
.drop(2)
.take(3)
.collect { print("$it ") }
}학습 팁
transform은 map이나 filter를 일반화한 것입니다. 원소당 0개, 1개, 또는 여러 개를 방출할 수 있습니다.
주의할 점
Flow 연산자 내에서 delay를 호출할 수 있지만, 무한 Flow에 take 없이 collect하면 영원히 멈추지 않습니다.
자주 묻는 질문
Flow 연산자 (Flow Operators)란 무엇인가요?
Flow의 중간 연산자를 활용하여 비동기 데이터 스트림을 변환합니다. map , filter , transform , debounce 등을 다룹니다.
Flow 연산자 (Flow Operators) 학습 시 주의할 점은 무엇인가요?
Flow 연산자 내에서 delay 를 호출할 수 있지만, 무한 Flow에 take 없이 collect 하면 영원히 멈추지 않습니다.
Continue Learning
Kotlin 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.