in src/main/java/net/hydromatic/linq4j/EnumerableDefaults.java [1408:1440]
public static <TSource, TResult> Enumerable<TResult> select(
final Enumerable<TSource> source,
final Function2<TSource, Integer, TResult> selector) {
return new AbstractEnumerable<TResult>() {
public Enumerator<TResult> enumerator() {
return new Enumerator<TResult>() {
final Enumerator<TSource> enumerator = source.enumerator();
int n = -1;
public TResult current() {
return selector.apply(enumerator.current(), n);
}
public boolean moveNext() {
if (enumerator.moveNext()) {
++n;
return true;
} else {
return false;
}
}
public void reset() {
enumerator.reset();
}
public void close() {
enumerator.close();
}
};
}
};
}