我正在使用 Google Collections 库AbstractIterator来实现生成器。我这样做时遇到了问题;我已将其简化为更基本的类型并重现了该问题。这种减少对于它的作用来说显然是多余的,通过 Iterable 从 1 计数到 numelements。
基本上在下面的代码中,未注释的版本有效,而注释的版本无效(最后提供一个空元素,而不是在最后一个数字上结束)。
我做错了什么,还是图书馆的问题?
private Iterable<Integer> elementGenerator(final int numelements) {
return new Iterable<Integer>() {
@Override public Iterator<Integer> iterator() {
return new AbstractIterator<Integer>(){
int localcount=0;
@Override protected Integer computeNext() {
if (localcount++ == numelements) return endOfData();
return localcount;
// return (localcount++ == numelements) ? endOfData() : localcount;
}
};
}
};
}
我还尝试摆弄?:
安排(例如,在 return 前加上前缀并与 +1 进行比较),但无济于事。我四处寻找有关此的文档,但没有找到任何东西。显然,?:
语法只是一种方便,而不是必需品,但仍然......