Kääntämisvirheiden ymmärtäminen

Kääntämisvirheiden ymmärtäminen

> LeekScript-opetusohjelma

Koodaat tekoälysi kuin siunattu. Rivit rullaavat ja hyvin loogisten muuttujien ja funktioiden nimet, kuten sfatyu_2, seuraavat toisiaan, elämä on hyvää... Yhtäkkiä ! "Tallenna"-näppäintä painetaan ja kääntäjä tarkistaa koodisi. Se tukee katsettasi intensiivisesti... Ja tässä on draamaa! Yksi (tai useampi!) iso punainen viiva ilmestyy editorin alareunaan, mitä nämä oudot ja esoteeriset taikakaavat voivat tarkoittaa?

Tämä opas paljastaa sinulle totuuden, jotta sinustakin voi tulla tietäjiä.

Lausunnon loppua odotettiin täällä

Opetus päättyy? Kyllä, se on ";" jokaisen rivin lopussa. Tämä viesti osoittaa rivin, josta puuttuu jokin näistä kuvista. Ole kuitenkin varovainen! osoitettu rivi on yleensä syytettyä edeltävä tai seuraava rivi.

!Yksi puuttuu;

Tästä puuttuu ";" rivin 18 lopusta, ja viesti kertoo, että rivillä ennen useWeapon ei ole puolipistettä!

Korjaus: moveToward(vihollinen);

Odottamaton tiedoston loppu

Salakavalampaa! Se on sama virhe kuin edellinen, mutta tällä kertaa se on tekoälysi viimeinen rivi, jolla ei ole puolipistettä. !unexp EoF

Korjaus: useWeapon(vihollinen);

Tämä voi johtua myös sulkemattomasta String:sta: !EoF 2

Korjaus: say("Voitin!");

Tuntematon muuttuja tai funktio

Kuka unohti ilmoittaa muuttujansa? Lyhyt paluu opetusohjelmaan Variables ja opetusohjelmaan Functions voi osoittautua hyödylliseksi.

!var or func unknown

Tässä "vihollinen"-muuttujaa ei ole ilmoitettu. Sinun on ensin luotava se avainsanalla "var". Korjaus: var enem = getNearestEnemy();

Ja tälle sitten? !ex tuntematon toiminto

No, kirjoittaja on vain apina, jolla on näppäimistö, eikä hän nähnyt, että hän käytti "getNeerest" (jota ei ole olemassa) "getNearest" sijaan, joka on ilmoitettu juuri yllä.

Tämä muuttujan nimi ei ole käytettävissä

Et voi ilmoittaa uudelleen muuttujaa, jolla on sama nimi kuin jo ilmoitettu muuttuja.

![](https://imgur.com/Qx5n006.png)

Korjaus (ruma): "var moi2 = 1". Parempi ratkaisu olisi käyttää nimiä, jotka todella vastaavat muuttujien roolia.

Varoitus: Tämä virhe voi ilmetä myös globaalin muuttujan nimen vuoksi.

Tämä virhe koskee myös sinua, jos käytät pilkkua kunnioitetun puolipisteen sijaan: ![](https://imgur.com/cCpqtxS.png)

Korjaus: var enem = getNearestEnemy();

Tämä johtuu rivin muuttujan ilmoituksesta: muuttuja1 = 1, muuttuja2 = 2; on täysin kelvollinen syntaksi (katso Muuttujat).

Tämä funktion nimi ei ole käytettävissä

Kuten edellisessä virheessä, et voi käyttää uudelleen jo käytettyä funktion nimeä.

![](https://imgur.com/UUfrixR.png)

Korjaus (erittäin ruma): function getNearest2() {

Tätä parametrin nimeä ei voi käyttää

Joten yritämme käyttää globaalin muuttujan nimeä parametrin nimenä, vai mitä? Tiedätkö mitä se voisi maksaa sinulle, jos joutuisit riitaan yhden vähemmän ystävällisen kollegani kanssa?

![](https://imgur.com/xnAOUAV.png)

Korjaus:

Odotetaan sulkevia sulkuja

Kuten virheilmoitus osoittaa, merkityltä riviltä puuttuu sulku. !väärä jos

Tässä koodin rivin 19 tulee olla if (not isAlive(vihollinen)) {

Tässä odotettiin arvoa

Toimintokutsu ei ole suljettu?? Tässä on mitä saat! !odotettu arvo

Korjaa moveToward(vihollinen);

Väärä parametrien määrä

Parametrit? kezako? Pikakatsaus Functions-opetusohjelmaan on paikallaan!

!nb väärä parametri

Tässä moveToward-funktio hyväksyy 1-2 parametria, ja annamme sille 0. Ilmeisesti kääntäjä osuu sormiimme. Korjaa "moveToward(enemy);" tai "moveToward(vihollinen, mp);" mp-numerolla.

Huomaa, että saat saman virheen, jos annat liian monta parametria funktiolle (Esim.: moveToward(vihollinen, mp, asia);).

Kaikkia lohkoja ei ole suljettu

Mikä on lohko? Se on koodin osa, jota ympäröi { }. Tässä avasimme lohkon merkillä { sulkematta sitä. !lohkoja ei ole suljettu

Tästä } puuttuu if-sanan lopun jälkeen. Siksi kääntäjä osoittaa nykyisen lohkon lopun (tässä tiedoston lopun) osoittaakseen, että olemme unohtaneet sulkea kaikki lohkot. Korjaus:

Ei suljettavia lohkoja

Tämä tilanne on päinvastainen kuin edellinen. Suljemme korttelin av