深入分析 Dart 集合操作符源码
Posted 熊喵先生
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入分析 Dart 集合操作符源码相关的知识,希望对你有一定的参考价值。
上篇文章我们详细介绍了有关 Dart 集合操作符函数的基本使用,那么这篇文章将会从源码角度,分析其内部原理。通过它你将会理解什么是惰性迭代器。
1. forEach 函数源码解析
void forEach(void f(E element))
//可以看到在 forEach 内部实际上就是利用 for-in 迭代,每迭代一次就执行一次 f 函数,
//并把当前 element 回调出去
for (E element in this) f(element);
2. map 函数源码解析
main()
var languages = <String>[\'Dart\', \'Kotlin\', \'Java\', \'javascript\', \'Go\', \'Python\', \'Swift\'];
print(languages.map((language) => \'develop language is $language\').join(\'---\'));
以上面的例子为例。
首先,需要明确一点,languages 内部本质是一个 _GrowableList<T>
,我们都知道 _GrowableList<T>
是继承了 ListBase<T>
,然后 ListBase<E>
又 mixin with ListMixin<E>
。所以 languages.map 函数调用就是调用 ListMixin<E>
中的 map 函数,实际
以上是关于深入分析 Dart 集合操作符源码的主要内容,如果未能解决你的问题,请参考以下文章