Lua'da satır içi koşulları kullanmanın bir yolu var mı?
Gibi:
print("blah: " .. (a == true ? "blah" : "nahblah"))
Yanıtlar:
Elbette:
print("blah: " .. (a and "blah" or "nahblah"))
(cond and false-value or x)
Bu x
her durumda sonuçlanacaktır .
a and false or true
ile aynı cevabı vermeyeceği doğrudur not a
. Bu deyim, genellikle eğer arzu değer durumlar için kullanılır a
doğrudur olamaz false
ya nil
.
a and assert(b) or c
.
Eğer a and t or f
sizin için çalışmaz, her zaman sadece bir işlev oluşturabilirsiniz:
function ternary ( cond , T , F )
if cond then return T else return F end
end
print("blah: " .. ternary(a == true ,"blah" ,"nahblah"))
Tabii ki, o zaman T ve F'nin her zaman değerlendirildiği dezavantajınız var .... Üç basamaklı fonksiyonunuza işlevler sağlamanız gerektiğini ve bu zorlaşabilir:
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
olduğu nil
.