È 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à x
in tutti i casi.
a and false or true
non 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 false
o nil
.
a and assert(b) or c
.
Se a and t or f
non 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
.