* stream : 파이프 개념.
- 값, 이벤트, 객체, 컬렉션, 맵, 오류 또는 심지어 다른 스트림에서 모든 유형의 데이터가 스트림에 의해 전달 가능
- async* : 게으른 연산. 요청이 있을 때는 연산을 미루다가 함수에서 사용 시 연산함
- yield : return과 비슷하게 값을 반환해주는데 한번에 하나씩 return함과 동시에 함수가 종료되지 않고 계속 열려있으면서 지속적으로 return 해줌.
import 'dart:async';
Future<int> sumStream(Stream<int> stream) async {
var sum = 0;
await for (var value in stream) {
sum += value;
print("value : " + value.toString() + ", sum : " + sum.toString());
}
return sum;
}
Stream<int> countStream(int to) async* {
for (int i = 1; i <= to; i++) {
print("yield : " + i.toString());
yield i;
}
}
main() async {
var stream = countStream(10);
//이때 stream 생성. stream에 데이터가 순차적으로 들어가 있음.
var sum = await sumStream(stream);
print(sum);
}
//결과
yield : 1
value : 1, sum : 1
yield : 2
value : 2, sum : 3
yield : 3
value : 3, sum : 6
yield : 4
value : 4, sum : 10
yield : 5
value : 5, sum : 15
yield : 6
value : 6, sum : 21
yield : 7
value : 7, sum : 28
yield : 8
value : 8, sum : 36
yield : 9
value : 9, sum : 45
yield : 10
value : 10, sum : 55
55
같이 보면 좋은 포스팅
https://cording-cossk3.tistory.com/88
[Flutter] Dart 문법 (skip, take)
* skip, take - skip : 첫 번째 (count) 요소 제외한 모든 요소 제공하는 iterable 반환, 즉 count개 요소 제외한 모든 요소 - take : 이 iterable의 첫 번째 요소 (count) 개의 lazy iterable 반환, 즉 iterable의 첫 번째 요
cording-cossk3.tistory.com
https://cording-cossk3.tistory.com/89
[Flutter] Dart 문법(??=, ??, null 인식 연산자, cascade, ..) #flutter operater ?? #flutter null #dart ..
* null 인식 연산자 : ??=, ?? * cascade (..연산자) : 자바의 builder 패턴과 유사. 객체 레퍼런스 변수 없이 바로 값 대입 가능 class Animal { var name = "dog"; var age; var sound; } main() { var a = 3; // ??= : 변수가 현재
cording-cossk3.tistory.com
https://cording-cossk3.tistory.com/85
[Flutter] Dart 문법 (async, Future, await, then)
* 비동기 - 아래 printWithDelay함수에서 await를 빼고 실행시키면 Future.delayed와 print가 동시에 실행되는 듯 하고, await을 넣고 실행시키면 delay가 적용된 후에 print가 실행된다. //Future : An object representing
cording-cossk3.tistory.com
https://cording-cossk3.tistory.com/84
[Flutter] Dart 문법 (abstract, implement)
* 추상클래스, implement : 추상클래스 및 일반 클래스 implement 가능. - implement하면 클래스가 구현해 둔 메서드도 재정의 해야할 강제성이 생김. (일반 메서드도 구현해야 함) class Spacecraft extends Describ
cording-cossk3.tistory.com
https://cording-cossk3.tistory.com/86
[Flutter] Dart 문법 (getter, setter)
* getter, setter class Rectangle { double left, top, width, height; Rectangle(this.left, this.top, this.width, this.height); //Define two calculated properties : right and bottom. double get right => left + width; set right(double value) => left = value -
cording-cossk3.tistory.com
'프로그래밍 > Flutter-Dart' 카테고리의 다른 글
[Flutter] Flutter App (2) (0) | 2021.03.16 |
---|---|
[Flutter] Flutter App (1) (0) | 2021.03.16 |
[Flutter] Dart 문법(??=, ??, null 인식 연산자, cascade, ..) #flutter operater ?? #flutter null #dart .. (0) | 2021.03.16 |
[Flutter] Dart 문법 (skip, take) (0) | 2021.03.15 |
[Flutter] Dart 문법 (json) (0) | 2021.03.15 |
댓글