Ответ 1
поскольку он эквивалентен использованию итератора, он эквивалентен вызову коллекций. iterator(), и он вызывается один раз.
если я делаю это в Java:
for(String s : myCollection.expensiveListGeneration())
{
doSomething();
}
является дорогостоящимListGeneration(), вызывается только один раз в начале или в каждом итерации цикла?
Является ли она зависимой от реализации?
поскольку он эквивалентен использованию итератора, он эквивалентен вызову коллекций. iterator(), и он вызывается один раз.
Он вызывается один раз, а не зависит от реализации. Цикл for-each основан на интерфейсе Iterable
. Все, что он делает, вызывает метод коллекции iterator()
один раз в начале, а затем работает с этим итератором.