Esiste comunque un modo per utilizzare le condizioni inline in Lua?Condizioni in linea in Lua (a == b? "Sì": "no")?
Come ad esempio:
print("blah: " .. (a == true ? "blah" : "nahblah"))
Esiste comunque un modo per utilizzare le condizioni inline in Lua?Condizioni in linea in Lua (a == b? "Sì": "no")?
Come ad esempio:
print("blah: " .. (a == true ? "blah" : "nahblah"))
Certo:
print("blah: " .. (a and "blah" or "nahblah"))
Se il a and t or f
non funziona per voi, si può sempre e solo 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"))
naturalmente , quindi hai il vantaggio che T e F sono sempre valutati ... per aggirare che y ou necessità di fornire funzioni per la vostra funzione ternario, e che può ottenere 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))
Penso che questo sia il più utile per le variabili booleane – Vyacheslav
Questa risposta è in realtà migliore della risposta principale perché funziona anche per i booleani. –
C'è un bel articolo su lua-users wiki circa operatore ternario, insieme con il problema di fornire spiegazioni e diverse soluzioni.
+1 per la risposta. Tuttavia, non penso che sia assolutamente vero - non uso LUA - ma penso che condivida un "difetto" con questo approccio rispetto a un operatore ternario in altre lingue. Immagina: '(cond e false-value o x)' Ciò comporterà 'x' in tutti i casi. –
non dovrebbe stampare anche il valore di A? – corsiKa
@glowcoder No. "L'operatore di congiunzione (e) restituisce il primo argomento se questo valore è falso o nullo, altrimenti restituisce il secondo argomento L'operatore di disgiunzione (o) restituisce il primo argomento se questo valore è diverso da zero e false, altrimenti, o restituisce il secondo argomento: entrambi ee o utilizzano la valutazione di scorciatoie, ovvero il secondo operando viene valutato solo se necessario "- da http://www.lua.org/manual/5.0/manual .html –