SWITCH valójában nem is függvény, csak egy szelekció (elágazás), lényegében mondhatjuk, hogy IF-ek sorozatának rövidítése.
switch(var){
case 0: cmd1();
case 1: cmd2();
case 2: cmd3();
default: cmd4();
}
Ugyanazt jelenti, mintha ezt írtad volna:
if (var == 0) cmd1();
else if (var == 1) cmd2();
else if (var == 2) cmd3();
else cmd4();
Részletesebben:
Hogy ez mit is jelent. Tegyük fel, hogy van egy változód, például
new skin;
ebbe a változóba kérjük is le a játékos skinjét:
skin = GetPlayerSkin(playerid);
Most ugye a skin változóban benne van egy szám, ami alapján meg tudjuk mondani a játékos kinézetét. Tegyük fel, hogy mi most le szeretnénk azt ellenõrizni, hogy a játékos a BUSZ_SKIN-el vagy a RENDOR_SKIN-el vagy a CIVIL_SKIN-el van-e.
Ilyenkor jön a \"kezdõ pawner\", hogy dicsak ez kiönnyû, van itt nekünk if-ünk! Lássuk hogy is néz ki:
if(skin == BUSZ_SKIN)
{
// hát akkor adunk neki egy buszt
}
else if(skin == RENDOR_SKIN)
{
// hát akkor adunk neki egy jelvényt
}
else if(skin == CIVIL_SKIN)
{
// hát akkor adunk neki egy botot
}
else
{
// hát te nemtom mi vagy de kapsz egy nyalókát
}
Igen ám. De kicsit sok a feltétel meg hosszú is a kód, nem? Fõleg akkor ha még hozzáadunk pár skint. Na ilyenkor jön számításba a switch..case szerkezet. Nézzük a fenti kódot átírva:
switch(skin)
{
case BUSZ_SKIN:
// hát akkor adunk neki egy buszt
break;
case RENDOR_SKIN:
// hát akkor adunk neki egy jelvényt
break;
case CIVIL_SKIN:
// hát akkor adunk neki egy botot
break;
default:
// hát te nemtom mi vagy de kapsz egy nyalókát
}
Remélem látszik, hogy sokkal rövidebben meg lehet oldani. Minden case után írhatod az utasításokat, ám az utasítások végén egy break;-et is tenni kell, hogy ne ugorjon át a következõ case-be. A switch zárójelei közé változót tehetsz ami vagy számot vagy karaktert tárol. Tömören ennyi.