Szerző Téma: foreach és az iterátor használata, pontosan mi a légyege?  (Megtekintve 637 alkalommal)

foreach és az iterátor használata, pontosan mi a légyege?
« Dátum: 2013. augusztus 20. - 01:58:06 »
0 Show voters
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\'.

foreach és az iterátor használata, pontosan mi a légyege?
« Válasz #1 Dátum: 2013. augusztus 20. - 08:33:17 »
+1 Show voters
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.

foreach és az iterátor használata, pontosan mi a légyege?
« Válasz #2 Dátum: 2013. augusztus 20. - 13:08:29 »
0 Show voters
Köszönöm ɐʞzssǝlosz így már értem, hogyan mûködik, ment a plusz a segítségedért. :)

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal