Roblox GuidebookBase de conocimiento
Español ⌄

Desarrollo / ROBLOX

Condiciones Luau: orden de if y elseif en umbrales de progreso

Selecciona un estado claro a partir de las etapas completadas. Comprueba prioridad, límites exactos y diferencias entre varios if y una cadena elseif con datos originales.

Actualizado:

Define primero los estados #

Un desafío ficticio tiene diez etapas. La etiqueta didáctica usa new en cero, started desde uno, halfway desde cinco y complete desde diez. Son identificadores originales. Clasificar un número no confirma progreso real, concede insignias ni guarda datos.

Anota umbrales antes del código. En cinco son verdaderas las condiciones de al menos uno y al menos cinco. Decide cuál tiene prioridad. Una etiqueta necesita un estado elegido en lugar de mensajes contradictorios. Este acuerdo indica qué comprobaciones deben ir primero y qué espera quien llama.

Comprueba primero el umbral alto #

classifyProgress comprueba diez, cinco y uno. La cadena if, elseif, else ejecuta la primera rama coincidente. Siete coincide con cinco y devuelve halfway sin continuar al umbral inferior. Cero no cumple ninguno y llega a else.

Ejecuta el ejemplo por separado y compara new, started, halfway, complete para 0, 1, 5, 10. Las entradas pequeñas son conocidas. Los originales se ejecutaron realmente con un intérprete Luau independiente. Verifica lenguaje, no una cuenta Roblox ni un sistema completo de progreso.

Orden de umbralesAbrir imagen a tamaño completo ↗
Esquema original, no captura Roblox.
local function classifyProgress(count)
    if count >= 10 then
        return "complete"
    elseif count >= 5 then
        return "halfway"
    elseif count >= 1 then
        return "started"
    else
        return "new"
    end
end
for _, count in {0, 1, 5, 10} do
    print(classifyProgress(count))
end

Detecta la prioridad invertida #

Si count >= 1 aparece primero, diez selecciona started. Las ramas siguientes no se ejecutan aunque la condición de finalización también sea verdadera. La prioridad es el fallo, no el número ni >=. Una condición amplia captura entradas necesarias para otra posterior más específica.

Registra entrada, condiciones verdaderas y primera rama elegida. Cambiar la palabra started por complete también convertiría una etapa en finalización. Corrige el orden o redefine los estados. Rangos explícitos sin superposición ayudan cuando no se pueden ordenar por especificidad.

Compara varios if independientes #

El segundo ejemplo usa count=7 con dos if separados. Ambos coinciden y muestran started y halfway. Una cadena elseif posterior imprime solo halfway con los mismos datos. Los if independientes evalúan por separado; la cadena elige una rama.

Varias comprobaciones sirven para acciones compatibles. Una etiqueta única normalmente requiere selección exclusiva. Predice cuántos mensajes habrá y compáralo con el resultado. Varios if no son siempre incorrectos: fallan cuando contradicen el comportamiento que pide esta tarea.

Una rama o pruebas independientesAbrir imagen a tamaño completo ↗
Esquema original de comparación; anota observaciones reales aparte.
local count = 7
if count >= 1 then
    print("started")
end
if count >= 5 then
    print("halfway")
end
if count >= 5 then
    print("halfway")
elseif count >= 1 then
    print("started")
end

Distingue verdad y comparación #

En Luau cero y la cadena vacía son verdaderos; false y nil son falsos. Por eso if count then no comprueba haber alcanzado la primera etapa. El ejercicio requiere count >= 1, un umbral numérico explícito.

Valida aparte las entradas reales: números enteros finitos dentro del rango acordado. Aquí usamos valores didácticos conocidos, sin validar progreso enviado por clientes. No conviertas silenciosamente nil o texto en participante nuevo y uses después esa clasificación para recompensas.

Prueba ambos lados del límite #

Prepara 0, 1, 4, 5, 9 y 10. Espera new, started, started, halfway, halfway y complete. Compara cero con uno y cada valor inmediatamente anterior con el propio umbral. Así detectas un > accidental en lugar de >=.

El archivo de comprobación también compara prioridades en diez y cuenta mensajes independientes. Verifica este ejercicio original. Nuevos estados exigen actualizar la matriz: un resultado anterior correcto no prueba reglas posteriores que todavía no se comprobaron.

Separa clasificación y presentación #

classifyProgress devuelve un ID técnico. El texto visible puede traducirse aparte mediante ese ID. La traducción no debería alterar umbrales. Guardar reglas solo en texto de botones puede hacer que código y etiqueta traducida signifiquen cosas distintas.

Documenta los cuatro ID y sus significados. Cambiar una etiqueta no realiza acciones del juego. Si un futuro estado controla acceso, verifica las reglas del servidor aparte. Una cadena complete visible no demuestra el origen del número y no autoriza por sí sola una recompensa.

PruebaExpectativa
0new
4started
5halfway
10complete

Entrega reglas y pruebas juntas #

Conserva prioridad, entradas válidas, ID y valores alrededor de cada límite. Especifica si se necesita un estado o varias acciones independientes. Otra persona puede reproducir la decisión y entender por qué cambiar el orden modifica el resultado.

Añade nuevos umbrales primero a la matriz, luego al código, y comprueba vecinos y estados anteriores. Esto sigue siendo cálculo puro Luau sin objetos Roblox, red, almacenamiento ni visitas reales. Su resultado útil es un acuerdo verificable para seleccionar un estado.

CampoAnotar
EntradaCantidad conocida
PrioridadUmbral alto primero
ResultadoUn ID de estado
PruebasAmbos lados del límite

Fuentes originales

Roblox — Official documentation