Olen miettinyt tuossa, että kun yleensä näkee koodeja joissa on jokin tietty pääsilmukka, niin niissä käytetään muuttujaa poistumiseen. Kuten näin:
int i = 0; while (i == 0) { tee_jotain; if (jotain_tapahtuu) { i = 1; } }
Mutta miksei tuota voisi vain tehdä näin?
while (1) { tee_jotain; if (jotain_tapahtuu) { break; } }
Tuossa säästyisi luomasta uutta muuttujaa. Mutta onko while (1)-silmukoissa jotain vaarallista tai muuten harmillista, mitä ei vain kertakaikkiaan saa tehdä?
En kyllä keksi mitään hyvää syytä moiseen. Ehkä i
:n arvoa käytetään myöhemmin johonkin muuhun?
Ehkäpä, mutta pääasia tässä on kuitenkin tuon silmukan pyörittäminen loputtomiin ja erkaneminen break;:llä.
ESIM. Tuossa ohjelmointiputkan SDL-manuaalissa (https://www.ohjelmointiputka.net/oppaat/opas.
No ainakin mitä itse tein VB:llä jotain peliluuppeja, niin tuon muuttujan hyöty oli se, että sen pysty laittaan todeksi jossain pääloopin ulkopuolella, kuten QueryUnload-eventissä, joka tapahtuu kun ruksia painetaan yläkulmasta. Breakia ei ois sieltäkäsin voinu tehä.
Tuon breakin kanssa voi tulla ongelmia, jos pääsilmukan sisällä on toinen looppi. Voi olla hankalaa debuggata jos sattuu vaikka kutsumaan breakkia väärässä kohtaa jolloin päälooppi katkeaa kokoajan.
Aihe on jo aika vanha, joten et voi enää vastata siihen.