1
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使用迭代器吗?

4

1 回答 1

2

Gee 迭代器/Traversables 将foreach实现为一种方法:

list.filter (s => s > "a").foreach (s => { stdout.printf (@"s\n"); return true; });
于 2013-09-09T12:30:10.280 回答