Работает ли foreach на итераторе?

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 работать на итераторе?


person Jens Mühlenhoff    schedule 09.09.2013    source источник


Ответы (1)


Итераторы/Traversables Gee реализуют foreach как метод:

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