Apakah ada cara untuk menggunakan kondisi sebaris di Lua?
Seperti:
print("blah: " .. (a == true ? "blah" : "nahblah"))
Jawaban:
Tentu:
print("blah: " .. (a and "blah" or "nahblah"))
(cond and false-value or x)Itu akan menghasilkan xsemua kasus.
a and false or truetidak akan memberikan jawaban yang sama seperti not a. Idiom ini biasanya digunakan untuk kasus-kasus di mana nilai yang diinginkan jika abenar tidak dapat falseatau nil.
a and assert(b) or c.
Jika a and t or ftidak berhasil, Anda selalu dapat membuat fungsi:
function ternary ( cond , T , F )
if cond then return T else return F end
end
print("blah: " .. ternary(a == true ,"blah" ,"nahblah"))
tentu saja, maka Anda memiliki kekurangan bahwa T dan F selalu dievaluasi .... untuk menyiasati bahwa Anda perlu menyediakan fungsi ke fungsi terner Anda, dan itu bisa menjadi sulit:
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))
tadalah nil.