Flutter Tips之 - Operator on Iterable<T> in Dart
如果想要做两个列表,我希望从列表一去掉第二个列表里的数据
const allNames = ['foo', 'bar', 'baz', 'qux'];
const disallowedNames = ['foo', 'qux'];
最简单粗暴的方式就是for循环,然后if判断, 但是呢这种方式和的复杂度高。
如果说官方提供一个方法,那就太完美了。但是并没有,那么我能不能自己写一个呢?
思路是:给Iterable增加一个拓展,然后可以再where()汗水守护的帮助下从这个实例中移除第二个Iterable<T>的内容
extension RemoveAll<E> on Iterable<E> {
Iterable<E> operator -(Iterable<E> other) => where(
(e) => !other.contains(e),
);
}
测试一下
void testIt() {
final result = allNames - disallowedNames;
result.log(); // bar, baz
}
这样看起来舒服多了。
转载自:https://juejin.cn/post/7172411421731323917