È comunque possibile utilizzare le condizioni in linea in Lua?
Ad esempio:
print("blah: " .. (a == true ? "blah" : "nahblah"))
Risposte:
Sicuro:
print("blah: " .. (a and "blah" or "nahblah"))
(cond and false-value or x)risultato sarà xin tutti i casi.
a and false or truenon darà la stessa risposta di not a. Questo idioma viene solitamente utilizzato per i casi in cui il valore desiderato se aè vero non può essere falseo nil.
a and assert(b) or c.
Se a and t or fnon funziona per te, puoi sempre creare una funzione:
function ternary ( cond , T , F )
if cond then return T else return F end
end
print("blah: " .. ternary(a == true ,"blah" ,"nahblah"))
ovviamente, poi hai l'inconveniente che T e F vengono sempre valutati ... per aggirare il fatto che devi fornire funzioni alla tua funzione ternaria, e questo può diventare ingombrante:
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))
tè nil.