Здравствуйте, подскажите, в каких случаях foreach лучше, а в каких лучше использовать for
Вид для печати
Здравствуйте, подскажите, в каких случаях foreach лучше, а в каких лучше использовать for
Foreach - это обертка над for для использования итераторов. Первый лучше использовать тогда, когда нужно использовать значения из диапазона [0,size) в упорядоченном виде. For для всех других случаев.
Пример:
У нас на сервере есть только 3 игрока с идентификаторами 3, 10, 204
foreach (new p : Player) { }
Выведет: 3 10 204
Если бы мы использовали for, то нам пришлось бы всегда проверять занятость слота.
for (new i = 0; i < MAX_PLAYERS; ++i) { continue; }
Выведет тоже самое.
Различие лишь в том, что значения в первом примере записываются в итератор и не проверяются. Итератор - Player. На данном форуме есть статья про итераторы в Pawn (http://pro-pawn.ru/showthread.php?15081).
а можете пример показать где лучше for юзать
Везде, где нельзя применять foreach.
Можешь использовать foreach везде, только нужно создать свой итератор. Чекай тут
Из гайда по Русски:
PHP код:
new Iterator:OwnedVehicles[MAX_PLAYERS]<MAX_VEHICLES>; //Создаешь массив
PHP код:
Iter_Init(OwnedVehicles); //Даешь понять, что это итератор в OnGameModeInit например
PHP код:
Iter_Add(OwnedVehicles[5], 5); //Добавляешь игроку с id 5 автомобиль с id 5
По поводу "что лучше" - ничего.PHP код:
foreach (new i : OwnedVehicles[5]) //Парсишь id машин, которые находятся у игрока 5
Далеко не везде это будет уместно. Подробнее описал тут всю "проблему"