if, else, else if and end Lua

Makenshi picture Makenshi · May 2, 2012 · Viewed 46.8k times · Source

Any idea why this is wrong in Lua?

       if Pieza == 1 then
            if Rotacion == 1 then
                Piezas = Cuadrado1
            else if Rotacion == 2 then
                Piezas = Cuadrado2
            else if Rotacion == 3 then --this is Line 273
                Piezas = Cuadrado3
            else if Rotacion == 4 then
                Piezas = Cuadrado4
            else
                io.write("Me Envio una rotacion que no existe? \n");
            end 
--this end closes the if inside the first if the one using to compare Rotacion
        else if Pieza == 2 then
            if Rotacion == 1 then
                Piezas = I1
            else if Rotacion == 2 then
                Piezas = I2
            else if Rotacion == 3 then
                Piezas = I3
            else if Rotacion == 4 then
                Piezas = I4
            else
                io.write("Me Envio una rotacion que no existe? \n");
            end
--this end closes the if inside the first if the one using to compare Rotacion
        else  --this else is in case Pieza != 1 || 2
            io.write("Me Envio una pieza que no existe? \n");
        end --this close the whole if (the one comparing "Pieza")

The error I'm getting is this 'end' expected (to close 'if' at line 273) near 'else'

Also, adding end after each if (this is not what should be done but tried it anyway) is not working...

If you need me to translate to english I will gladly do it commentaries and everything but I thought it wasn't neccesary for this question.

Answer

Markus Jarderot picture Markus Jarderot · May 2, 2012

It's elseif, not else if (notice the space). The error is because the interpreter expects an end to each else block.

See the manual for more information.