using Gee;
int main (string[] args) {
ArrayList<string> list = new ArrayList<string>();
list.add ("a");
list.add ("b");
list.add ("c");
foreach (var s in list.filter (s => s > "a")) stdout.printf (@"s\n");
return 0;
}
这不会编译,因为Traversable<G>.filter
不会返回带有“iterate()”方法的对象,而是Iterator<G>
。
有没有办法让foreach
处理迭代器?
答案 0 :(得分:2)
Gee迭代器/ Traversables实现foreach作为方法:
list.filter (s => s > "a").foreach (s => { stdout.printf (@"s\n"); return true; });