国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

dart系列之:在dart中使用生成器

yck / 2240人閱讀

摘要:同步的使用關(guān)鍵詞如下異步的使用的是關(guān)鍵詞如下生成關(guān)鍵詞使用的是。從中取出數(shù)據(jù)有兩種方式,第一種就是使用本身的來(lái)獲取中的數(shù)據(jù)。并且必須用在中,如下如果要想中斷對(duì)的監(jiān)聽(tīng),則可以使用或者。總結(jié)總結(jié)以上就是中生成器的使用了。

簡(jiǎn)介

ES6中在引入異步編程的同時(shí),也引入了Generators,通過(guò)yield關(guān)鍵詞來(lái)生成對(duì)應(yīng)的數(shù)據(jù)。同樣的dart也有yield關(guān)鍵詞和生成器的概念。

什么時(shí)候生成器呢?所謂生成器就是一個(gè)能夠持續(xù)產(chǎn)生某些數(shù)據(jù)的裝置,也叫做generator。

兩種返回類(lèi)型的generator

根據(jù)是同步生成還是異步生成,dart返回的結(jié)果也是不同的。

如果是同步返回,那么返回的是一個(gè)Iterable對(duì)象.

如果是異步返回,那么返回的是一個(gè)Stream對(duì)象。

同步的generator使用sync*關(guān)鍵詞如下:

Iterable naturalsTo(int n) sync* {  int k = 0;  while (k < n) yield k++;}

異步的generator使用的是async* 關(guān)鍵詞如下:

Stream asynchronousNaturalsTo(int n) async* {  int k = 0;  while (k < n) yield k++;}

生成關(guān)鍵詞使用的是yield。

如果yield后面跟著的本身就是一個(gè)generator,那么需要使用yield*。

Iterable naturalsDownFrom(int n) sync* {  if (n > 0) {    yield n;    yield* naturalsDownFrom(n - 1);  }}

Stream的操作

stream表示的是流,得到這個(gè)流之后,我們需要從流中取出對(duì)應(yīng)的數(shù)據(jù)。

從Stream中取出數(shù)據(jù)有兩種方式,第一種就是使用Stream本身的API來(lái)獲取Stream中的數(shù)據(jù)。

最簡(jiǎn)單的就是調(diào)用stream的listen方法:

  StreamSubscription listen(void onData(T event)?,      {Function? onError, void onDone()?, bool? cancelOnError});

listen可以接數(shù)據(jù)的處理方法,具體使用如下:

 final startingDir = Directory(searchPath);      startingDir.list().listen((entity) {        if (entity is File) {          searchFile(entity, searchTerms);        }      });

默認(rèn)的方法是onData方法。

另外一種就是今天要講解的await for.

await for的語(yǔ)法如下:

await for (varOrType identifier in expression) {  // Executes each time the stream emits a value.}

要注意的是上面的expression必須是一個(gè)Stream對(duì)象。并且await for必須用在async中,如下:

Future main() async {  // ...  await for (final request in requestServer) {    handleRequest(request);  }  // ...}

如果要想中斷對(duì)stream的監(jiān)聽(tīng),則可以使用break或者return。

總結(jié)

以上就是dart中生成器的使用了。

本文已收錄于 http://www.flydean.com/13-dart-generators/

最通俗的解讀,最深刻的干貨,最簡(jiǎn)潔的教程,眾多你不知道的小技巧等你來(lái)發(fā)現(xiàn)!

歡迎關(guān)注我的公眾號(hào):「程序那些事」,懂技術(shù),更懂你!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/124541.html

相關(guān)文章

  • dart系列:dart使用數(shù)字和字符串

    摘要:數(shù)字中定義了三種類(lèi)型的數(shù)字,分別是和。對(duì)于小數(shù)來(lái)說(shuō),可以使用來(lái)指定小數(shù)的位數(shù)如果要使用科學(xué)記數(shù)法的話,可以使用字符串所有的字符串在中都是以進(jìn)行編碼的,中的定義了很多常用的并且非常有用的方法。總結(jié)以上就是中數(shù)字和字符串的介紹。目錄簡(jiǎn)介數(shù)字字符串StringBuffer總結(jié)簡(jiǎn)介要想熟悉一種語(yǔ)言,最簡(jiǎn)單的做法就是熟悉dart提供的各種核心庫(kù)。dart為我們提供了包括dart:core,dart:a...

    番茄西紅柿 評(píng)論0 收藏2637
  • dart系列:元世界pubspec.yaml文件詳解

    摘要:有兩種依賴信息,一種是所有使用到這個(gè)的人都需要用到的依賴,這種依賴放在中。還有一種是只用在當(dāng)前開(kāi)發(fā)中的包,這種依賴放在中。在某些情況下,我們有可能需要覆蓋某些依賴包,則可以放在中。從之后,中還支持指定的版本總結(jié)總結(jié)以上就是的元世界詳解。? 目錄 簡(jiǎn)介 pubspec.yaml支持的字段 一個(gè)例子 字段詳情 總結(jié) ? 簡(jiǎn)介 pub...

    vibiu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<