foreach legyét probálom megérteni, de valahogy nem tudom felfogni az igazi légyegét.
Már az eleje sem tiszta:
Magyar leírásban így van leírva az elsõ példa:
foreach(Player, i)
{
printf( \"Játékos[%d] csatlakozva van\", i );
}
Viszont angol forumon így van írva, és szinte minden publikált szkripten így látom foreach (new i : Player):
foreach (new i : Player)
{
printf(\"Player %d is connected\", i);
}
Van külömbség a kettõ között? Szerintem nincs. Eddig még nagyjából értem, hogy csak az éppen online lévõ játékosokat veszi figyelembe.
Viszont ezt a \"iterátorok\" mûködésérõl semmi fogalmam nincs.Végigolvastam vagy 100×szor de fejben nem tudom összerakni.
Annyit értettem meg, hogy játékosra nem kell létrehozni, viszont másra igen, és azért kell létrehozni mert ez mutat az \'adatthalmazra\'.
Pedig leírtad a lényegét. (nem légyegét :D)
Alapjában véve egy for ciklus, viszont nem csak egymás utáni értékeket futtat le.
Ha megadod neki a következõ számsort 2, 6, 12, 23 akkor 4 szer fut le és ezeket az értékeket adja a változónak, egy sima for ciklussal ezt nem tudod megvalósítani.
A játékosok illetve az npc-re azért nem kell létrehoznod mert ezek már létre lettek hozva a függvénykönyvtárban, így már csak alkalmaznod kell, másra azért kell létrehoznod mert nincs létrehozva, sajnos a készítõje nem tudja hogy te még mire szeretnéd használni így nem hozott létre több Iterator-t a Player, Bot, Character,-en kívül.
new
Iterator:Player<MAX_PLAYERS>;
new
Iterator:Bot<MAX_PLAYERS>,
Iterator:Character<MAX_PLAYERS>;
Szerintem nincs különbség a kettõ közt, mindegy melyik megoldást használod.
Tehát gyakorlatilag a lényege annyi hogy egy olyan for ciklust hozhatsz vele létre ami képes olyan ismétlõdéssel mûködni, ami nem csak meghatározott értéknöveléssel fut le (1++), hanem olyan értékekkel amiket megadsz neki.