Комментарии 9
Можно ли упростить Revolver так, чтобы кода стало поменьше, а смысла — побольше?
Можно.
var colors = ['red', 'green', 'blue'];
for (var i = 0; i < units.length; i++) {
units[i].color = colors[i % 3];
}
Можно.
var colors = ['red', 'green', 'blue'];
for (var i = 0; i < units.length; i++) {
units[i].color = colors[i % 3];
}
конечно вы имелли ввиду
? ;)
... = colors[i % units.length]
? ;)
Пожалуй, цикл в примере я выбрал не очень удачно.
Представьте ситуацию, когда цикл неявный, и переменной i нет.
Или другую: нужно раскрасить не все юниты, а только наземные.
Представьте ситуацию, когда цикл неявный, и переменной i нет.
Или другую: нужно раскрасить не все юниты, а только наземные.
var next_color = revolver(['red', 'green', 'blue']);
for (var i = 0; i < units.length; i += 1) {
if (units[i].type === LAND_UNIT) {
units[i].color = next_color();
}
}
а слабо дочитать статью в википедии до определения генераторов и не пороть глупости? ru.wikipedia.org/wiki/%C8%F2%E5%F0%E0%F2%EE%F0_(%EF%F0%EE%E3%F0%E0%EC%EC%E8%F0%EE%E2%E0%ED%E8%E5)#.D0.93.D0.B5.D0.BD.D0.B5.D1.80.D0.B0.D1.82.D0.BE.D1.80.D1.8B
Вот тут
"Генератор выглядит как функция, которая помнит, в каком месте был предыдущий return, и при следующем вызове возобновляет работу с прерванного места"по-моему закралась ошибка, должно быть «Итератор выглядит как функция, которая помнит...»
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Итераторы и генераторы на основе функций