foreach是否在迭代器上工作?

时间:2013-09-09 11:18:33

标签: glib vala gee

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处理迭代器?

1 个答案:

答案 0 :(得分:2)

Gee迭代器/ Traversables实现foreach作为方法:

list.filter (s => s > "a").foreach (s => { stdout.printf (@"s\n"); return true; });