Moi
Alla oleva palauttaa seuraavaa: 'ConsoleApplication3.Program.taistelut(int,int)
Osaako joku sanoo miks?
static int taistelut(int attackValue1, int attackValue2) { if (attackValue1 > attackValue2) { return 1; } else if (attackValue1 < attackValue2) { return 2; } else if (attackValue1 == attackValue2) { return -1; } }
Mod. korjasi kooditagit!
Kääntäjän näkökulmasta vika on siinä, että jos mikään if-lause ei toteudu, funktio ei palauta mitään arvoa, vaikka sääntöjen mukaan tuon funktion kuuluu kaikissa tapauksissa palauttaa jotakin. Koodarin mielestä ehkä vika on siinä, että kääntäjä ei ymmärrä, että käytetyt if-lauseet kattavat kaikki mahdollisuudet (eli jokin if-lause toteutuu aina).
Funktion sisällön voi kirjoittaa toimivasti monellakin tavalla, ja minusta monet näistä vaihtoehdoista ovat myös selvempiä kuin nykyinen tapasi – itse asiassa aivan samasta syystä, jonka takia kääntäjäkin hylkää nykyisen koodisi. Yksi tapa on poistaa viimeinen if-lause eli kirjoittaa viimeinen return-rivi suoraan viimeiseen else-lohkoon.
Itse kirjoittaisin näin:
if (a < b) { return 1; } if (a > b) { return 2; } return -1;
Kiitos paljon. näin sitä aloittelleva oppii uutta..)
Aihe on jo aika vanha, joten et voi enää vastata siihen.