일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- C언어 포인터
- jupyter
- Houdini
- 구조체
- Python
- 포인터
- git
- dart 언어
- jupyter lab
- 플러터
- C# delegate
- Data Structure
- Unity
- 도커
- gitlab
- c#
- HTML
- 다트 언어
- c언어
- 유니티
- c# winform
- Algorithm
- docker
- c# 윈폼
- 깃
- github
- C++
- Flutter
- c# 추상 클래스
- vim
Archives
- Today
- Total
nomad-programmer
[Programming/Dart] Stream : async*, yield 본문
아래의 코드를 보자.
// async*는 yield를 쓴다는 의미이다.
Stream<int> createStream(List<int> numbers) async* {
for (int number in numbers) {
// yield는 제너레이터를 만든다는 뜻이다.
yield number;
}
}
void main() {
// 스트림 생성
var numStream = createStream([1, 2, 3, 4, 5]);
numStream.listen((int number) => print(number));
}
/* 결과
1
2
3
4
5
*/
스트림을 만드려면 async*와 yield를 써야 한다. 즉, 스트림 형식을 반환할때는 async* 키워드를 붙여야 한다.
- async* : async*는 제너레이터를 만든다는 뜻이다. 제너레이터는 게으르게(lazily) 데이터 연산을 할 때 쓰인다. 게으르다는 것은 미리 연산을 다 하는 것이 아니라, 요청이 있을 때까지는 연산 하는 것을 미루어 두었다가 필요할 때 처리하는 것을 뜻한다.
- yield : return이랑 유사하다. return은 한번 반환하면 함수가 종료되지만, yield는 열린 채로 존재하며 요청할 때 연산한다.
'Programming > Dart' 카테고리의 다른 글
[Programming/Dart] 언어로 구현하는 싱글턴 패턴 (Singleton Pattern) (0) | 2020.10.13 |
---|---|
[Programming/Dart] 다양한 Contructor (생성자) (0) | 2020.10.13 |
[Programming/Dart] 비동기 프로그래밍 : futures, async, await (2) | 2020.10.10 |
[Programming/Dart] 유용한 기법 (계단식 표기법, 컬렉션 if, 컬렉션 for, null) (0) | 2020.10.06 |
[Programming/Dart] 함수형 프로그래밍 (Functional Programming) (2) | 2020.10.06 |
Comments