es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Evaluación de la instrucción “if” en Lua.

Si uso:

local a, b ,c 
a = 1
b = 1
c = 1

if a == (b or c) then x end

Solo obtengo una respuesta si b es verdadero, c no se evalúa.

Si cambio esto a:

if (a == b or a == c) then x end

Esto evalúa correctamente tanto b como c.

PD: Estoy utilizando este código Lua en un sistema de automatización del hogar Fibaro Home Centre 3.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    La primera declaración if solo evalúa si a es igual a b o c si b es verdadero, pero no evalúa c si b es falso. Esto se debe a que el operador ‘or’ en Lua devuelve el primer operador si es verdadero, de lo contrario devuelve el segundo operador. Por lo tanto, si b es verdadero, la declaración if se evalúa como a == b y c ni siquiera se verifica. Sin embargo, si b es falso, la declaración if se evalúa como a == c porque el operador ‘or’ devuelve c como segundo operando.

    Para asegurarse de que la declaración if evalúe correctamente tanto b como c, puedes usar la segunda declaración if que verifica si a es igual a b o c por separado utilizando el operador ‘or’. Esto asegura que tanto b como c se evalúen, y la declaración if devuelve verdadero si b o c son iguales a a.

    Es importante tener en cuenta que el comportamiento del operador ‘or’ a veces puede ser útil en ciertas situaciones, como al proporcionar valores predeterminados para variables. Por ejemplo, puedes usar una sintaxis como a = b or 0 para asignar 0 a a si b es falso o nulo.

Comments are closed.