tutorial español aprender lua minecraft computercraft

español - aprender lua



¿Cómo terminar el script de Lua? (7)

Como dice la respuesta de prapin, en Lua la función os.exit([code]) terminará la ejecución del programa host. Esto, sin embargo, puede no ser lo que estás buscando, porque al llamar a os.exit se terminará no solo tu script, sino también las instancias Lua padre que se están ejecutando.

En Minecraft ComputerCraft , el error() llamada error() también logrará lo que está buscando, pero usarlo para otros propósitos que no sea terminar el script genuinamente después de que se haya producido un error probablemente no sea una buena práctica.

Debido a que en Lua todos los archivos de script también se consideran funciones que tienen su propio alcance, la forma preferida de salir de su script sería usar la palabra clave return , tal como lo hace al regresar de las funciones.

Me gusta esto:

while true do if turtle.detect() then if turtle.getItemCount(16) == 64 then return -- exit from the script and return to the caller end turtle.dig() --digs block in front of it end end

¿Cómo terminaría una secuencia de comandos de Lua? En este momento estoy teniendo problemas con exit (), y no sé por qué. (Esta es más una pregunta de Minecraft ComputerCraft, ya que usa las API incluidas). Aquí está mi código:

while true do if turtle.detect() then if turtle.getItemCount(16) == 64 then exit() --here is where I get problems end turtle.dig() --digs block in front of it end end


No hay una función global llamada exit en Lua estándar.

Sin embargo, hay una función os.exit . En Lua 5.1, tiene un argumento opcional, el código de error. En Lua 5.2, hay un segundo parámetro opcional, que indica si el estado de Lua debe cerrarse antes de salir.

Pero tenga en cuenta que Minecraft ComputerCraft puede proporcionar una función diferente a la de os.exit .



También puede finalizarlo manualmente manteniendo presionadas las teclas Ctrl + T unos segundos en la interfaz de la tortuga / computadora.


no use un while true

Haz algo como esto:

running = true while running do -- dig block turtle.dig() --digs block in front of it -- check your condition and set "running" to false if turtle.getItemCount(16) == 64 then running = false end end

Tampoco tienes que llamar a turtle.detect() antes de cavar porque turtle.dig() lo volverá a llamar interno


No lo uses while true . En lugar de usar algo como esto:

while turtle.getItemCount(16) < 64 do if turtle.detect() then turtle.dig() end end

Funcionará para ti.


La declaración de salto se saltará a la línea después for while esté el bucle for , while o repeat .

while true do if turtle.detect() then if turtle.getItemCount(16) == 64 then break end turtle.dig() -- digs block in front of it end end -- break skips to here

Una peculiaridad de lua: break tiene que llegar justo antes de end , aunque no necesariamente al end del ciclo del que quieres salir, como puedes ver aquí.

Además, si desea salir del bucle en una condición al inicio o al final del bucle, como se indicó anteriormente, a menudo puede cambiar el bucle que está utilizando para obtener un efecto similar. Por ejemplo, en este ejemplo podríamos poner la condición en el ciclo while:

while turtle.getItemCount(16) < 64 do if turtle.detect() then turtle.dig() end end

Tenga en cuenta que modifiqué sutilmente el comportamiento un poco allí, ya que este nuevo bucle se detendrá inmediatamente cuando llegue al límite de recuento de elementos, sin continuar hasta que detect() vuelva a ser verdadero.