Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- android designsystem
- 빌터패턴
- material3
- Coroutines
- kotlin multiplatform
- designPattern
- 코루틴
- Functional Programming
- 함수형프로그래밍
- Kotlin
- 코틀린
- 안드로이드 디자인시스템
- 디자인패턴 #
- kmp
- define
- 추상팩토리패턴
- compose
- builderPattern
- 추상 팩토리
- 디자인패턴
- PrototypePattern
- Design Pattern
- 옵저버 패턴
- 프로토타입 패턴
- Observer Pattern
- factory method
- ㅋㅁ
- 팩토리 메소드
- 코틀린멀티플랫폼
- Abstract Factory
Archives
- Today
- Total
오늘도 더 나은 코드를 작성하였습니까?
2장 시퀀스 빌더 본문
코틀린의 sequence List, Set과 같은 컬렉션이랑 비슷한 개념이지만, 필요할 때마다 값을 하나씩 계산하는 지연(lazy) 처리를 한다.
- 요구되는 연산을 최소한으로 수행한다.
- 무한정이 될 수 있다.
- 메모리 사용이 효율적이다.
val seq = sequence { // this : SequenceScope<Int>
yield(1)
yield(2)
yield(3)
}
fun main() {
for (num in seq) {
print(num)
}
}
수신 객체 지정 람다 함수 사용 ( susepnd SequenceScope<T>.() -> Unit )
숫자가 미리 생성되는 대신 필요할 때마다 생성된다는 것이 핵심이다.
시퀀스의 작동방식
val seq = sequence {
println("Generating First")
yield(1)
println("Generating Second")
yield(2)
println("Generating Third")
yield(3)
println("Done!")
}
fun main() {
for (num in seq) {
println("Next Number : $num")
}
}
1. sequence 빌더 에서 Generating First를 출력후 숫자1을 반환(yield)
sequence 중단
2. Next number is 1을 출력
sequence 중단된 지점에서 다시 시작
3. sequence 빌더 에서 Generating Second를 출력후 숫자2을 반환(yield)
sequence 중단
4. Next number is 2을 출력
sequence 중단된 지점에서 다시 시작
5. sequence 빌더 에서 Generating Third를 출력후 숫자3을 반환(yield)
sequence 중단
6. Next number is 3을 출력
7. hasNext
sequence 중단된 지점에서 다시 시작
Done!출력
일부 값만 요청해서 출력해보기.

어떤 지점이든 상관없이 이터레이터를 호출하면 빌더 함수에서 멈췄던 지점으로 다시 돌아가 다음 값을 가져온다.
*sequence 빌더는 반환(yield)이 아닌 중단함수를 사용하면 안된다.
'Coroutine > 코틀린 코루틴' 카테고리의 다른 글
| 7장 코루틴 컨텍스트 (1) | 2026.01.19 |
|---|---|
| 6장 코루틴 빌더 (0) | 2026.01.05 |
| 5장 코루틴 언어차원에서의 지원 vs 라이브러리 (0) | 2025.12.22 |
| 3장 중단은 어떻게 작동할까? (0) | 2025.11.27 |
| 1장 코틀린 코루틴을 배워야 하는 이유 (0) | 2025.11.09 |