¿Hay alguna forma de usar condiciones en línea en Lua?Condiciones en línea en Lua (a == b? "Sí": "no")?
Tales como:
print("blah: " .. (a == true ? "blah" : "nahblah"))
¿Hay alguna forma de usar condiciones en línea en Lua?Condiciones en línea en Lua (a == b? "Sí": "no")?
Tales como:
print("blah: " .. (a == true ? "blah" : "nahblah"))
Claro:
print("blah: " .. (a and "blah" or "nahblah"))
Si el a and t or f
no funciona para usted, siempre puede crear una función:
function ternary (cond , T , F)
if cond then return T else return F end
end
print("blah: " .. ternary(a == true ,"blah" ,"nahblah"))
por supuesto , entonces tienes el inconveniente de que siempre se evalúan T y F ... para evitar eso y ou necesita proporcionar funciones a su función ternaria, y que puede llegar difícil de manejar:
function ternary (cond , T , F , ...)
if cond then return T(...) else return F(...) end
end
print("blah: " .. ternary(a == true ,function() return "blah" end ,function() return "nahblah" end))
Creo que este es el más útil para las variables booleanas – Vyacheslav
Esta respuesta es en realidad mejor que la respuesta superior, ya que también funciona para los booleanos. –
hay un buen artículo sobre lua-users wiki acerca operador ternario, junto con la explicación de problemas y varias soluciones.
+1 para la respuesta. Sin embargo, no creo que esto sea estrictamente cierto, no utilizo LUA, pero creo que comparte un "defecto" con este enfoque sobre un operador ternario en otros idiomas. Imagine: '(cond y false-value o x)' Eso dará como resultado la 'x' en todos los casos. –
¿no sería eso también imprimir el valor de A también? – corsiKa
@glowcoder No. "El operador de conjunción (y) devuelve su primer argumento si este valor es falso o nulo; de lo contrario, y devuelve su segundo argumento. El operador de disyunción (o) devuelve su primer argumento si este valor es diferente de cero y falso, de lo contrario, o devuelve su segundo argumento. Ambos y y o usan la evaluación de acceso directo, es decir, el segundo operando se evalúa solo si es necesario "- de http://www.lua.org/manual/5.0/manual .html –