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 x
semua kasus.
a and false or true
tidak akan memberikan jawaban yang sama seperti not a
. Idiom ini biasanya digunakan untuk kasus-kasus di mana nilai yang diinginkan jika a
benar tidak dapat false
atau nil
.
a and assert(b) or c
.
Jika a and t or f
tidak 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))
t
adalah nil
.