API Basic Goto es - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki

GoTo / label:

ClassicUO • Basic

GoTo transfiere la ejecución a una etiqueta del procedimiento o función actual. Una etiqueta marca una posición, no un procedimiento invocable. Para el control habitual usa If, bucles y Return.

Sintaxis exacta

GoTo label
label:

Parámetros

  • label — Identificador declarado como label: en su propia línea del mismo procedimiento. Escribe GoTo label sin comillas, paréntesis ni dos puntos después del destino. Admite saltos hacia delante y atrás sin distinguir mayúsculas. Otro procedimiento puede reutilizar el nombre. Se admiten puntos, pero no convierten la etiqueta en miembro de módulo. No se admiten números, expresiones calculadas ni etiquetas de otro procedimiento como destinos.

Devuelve

GoTo y label: no devuelven valores, tampoco 1/0 ni TRUE/FALSE. Los ejemplos devuelven explícitamente desde Main los Integer -1, 6 y 123 calculados por el script.

Comportamiento

  • La preparación registra direcciones y resuelve saltos después de leer todo el procedimiento. La ejecución usa la dirección resuelta sin buscar otra vez en el texto. Conserva las variables y no revierte acciones anteriores.
  • Destino desconocido: SC009 y ejecución bloqueada por el cliente. Nombre repetido dentro de un procedimiento, incluso cambiando mayúsculas: SC021 antes de inicializar. Include conserva archivo y línea originales. Caracteres sobrantes pueden generar advertencias; usa la sintaxis exacta.
  • Salir de Try activos ejecuta sus Finally del interior al exterior antes del destino. Un salto dentro del mismo Try activo lo conserva. Un error en Finally puede impedir alcanzar el destino.
  • Entra en bucles y Try/Catch/Finally por su inicio normal. Saltar al medio no recrea inicializaciones ni contextos omitidos; no es una reanudación admitida. Para bucles usa Continue o Exit.
  • El salto atrás no añade límite de intentos, plazo ni espera. Cambia expresamente la condición de salida. El flujo normal también atraviesa las etiquetas: salta las secciones no deseadas o usa Return. Los manejadores de errores se instalan con On Error.

Ejemplos

1. Salto hacia delante

# amount=0 elige NoItems y result=-1, luego Finished devuelve -1. Con amount=4 el camino normal asigna 40 y GoTo Finished omite NoItems. Ambas etiquetas pertenecen a Main y no son llamadas.
Option Explicit On
Sub Main()
    Var amount = 0
    Var result = 0
    If amount <= 0 Then
        GoTo NoItems
    End If
    result = amount * 10
    GoTo Finished
NoItems:
    result = -1
Finished:
    Return result
End Sub

Explicación de los parámetros y la ejecución:

amount=0 elige NoItems y result=-1, luego Finished devuelve -1. Con amount=4 el camino normal asigna 40 y GoTo Finished omite NoItems. Ambas etiquetas pertenecen a Main y no son llamadas.

2. Repetición acotada

# attempt comienza en 0 y aumenta antes de comprobar. Again y again son la misma etiqueta. Tres pasadas suman 1, 2 y 3; después attempt<3 es falso y Return da 6. total se inicializa antes de la etiqueta y no se reinicia al saltar.
Option Explicit On
Sub Main()
    Var attempt = 0
    Var total = 0
Again:
    attempt += 1
    total += attempt
    If attempt < 3 Then
        GoTo again
    End If
    Return total
End Sub

Explicación de los parámetros y la ejecución:

attempt comienza en 0 y aumenta antes de comprobar. Again y again son la misma etiqueta. Tres pasadas suman 1, 2 y 3; después attempt<3 es falso y Return da 6. total se inicializa antes de la etiqueta y no se reinicia al saltar.

3. Salir de Try anidados

# trace pasa a 1; GoTo Finished omite trace=99. El Finally interior agrega el dígito 2 y el exterior agrega 3. Después se alcanza Finished y se devuelve 123. Cada Finally se ejecuta una vez para este salto.
Option Explicit On
Sub Main()
    Var trace = 0
    Try
        Try
            trace = trace * 10 + 1
            GoTo Finished
            trace = 99
        Finally
            trace = trace * 10 + 2
        End Try
    Finally
        trace = trace * 10 + 3
    End Try
Finished:
    Return trace
End Sub

Explicación de los parámetros y la ejecución:

trace pasa a 1; GoTo Finished omite trace=99. El Finally interior agrega el dígito 2 y el exterior agrega 3. Después se alcanza Finished y se devuelve 123. Cada Finally se ejecuta una vez para este salto.


en · ru · uk · fr · de · it · es · zh-tw · ja · ko

Basic