Flutterを触ってみたくなったので、ついでにDartの勉強も始めることにした。手始めに、フィボナッチ数列を求める Stream
を作って、そっから最初の10要素を取り出して表示するというプログラム。
import 'dart:async'; import 'dart:core'; main() async { var fibs = await fib().take(10).toList(); print(fibs); } Stream<BigInt> fib() async* { var a = new BigInt.from(0); var b = new BigInt.from(1); while(true) { yield a; var c = a + b; a = b; b = c; } }
$ dart fibs.dart [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
Stream#toList()
は非同期に処理が完了する Future<List<T>>
を返すのだけど、 await
で結果を待って List<T>
に変換することができるようだ。