【问题标题】:Does foreach work on Iterator?foreach 是否适用于迭代器?
【发布时间】:2013-09-12 20:55:12
【问题描述】:
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&lt;G&gt;.filter 不会返回一个带有“iterate()”方法的对象,而是一个Iterator&lt;G&gt;

有什么方法可以让foreach 在迭代器上工作?

【问题讨论】:

    标签: glib vala libgee


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-09-18
      • 2012-08-11
      • 1970-01-01
      • 2013-08-01
      • 1970-01-01
      • 2016-10-11
      • 2010-12-05
      • 2020-10-22
      • 1970-01-01
      相关资源
      最近更新 更多