W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
當(dāng)您需要延遲生成( lazily produce )一系列值時, 可以考慮使用_生成器函數(shù)_。 Dart 內(nèi)置支持兩種生成器函數(shù):
通過在函數(shù)體標(biāo)記 sync*, 可以實(shí)現(xiàn)一個同步生成器函數(shù)。 使用 yield 語句來傳遞值:
Iterable<int> naturalsTo(int n) sync* {
int k = 0;
while (k < n) yield k++;
}
通過在函數(shù)體標(biāo)記 async*, 可以實(shí)現(xiàn)一個異步生成器函數(shù)。 使用 yield 語句來傳遞值:
Stream<int> asynchronousNaturalsTo(int n) async* {
int k = 0;
while (k < n) yield k++;
}
如果生成器是遞歸的,可以使用 yield* 來提高其性能:
Iterable<int> naturalsDownFrom(int n) sync* {
if (n > 0) {
yield n;
yield* naturalsDownFrom(n - 1);
}
}
有關(guān)生成器的更多信息,請參考文章 Dart Language Asynchrony Support: Phase 2 .
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: