Apakah ada cara untuk menggunakan kondisi sebaris di Lua?
Seperti:
print("blah: " .. (a == true ? "blah" : "nahblah"))
lua
conditional
ternary
Softnux
sumber
sumber
Jawaban:
Tentu:
print("blah: " .. (a and "blah" or "nahblah"))
sumber
(cond and false-value or x)
Itu akan menghasilkanx
semua kasus.a and false or true
tidak akan memberikan jawaban yang sama sepertinot a
. Idiom ini biasanya digunakan untuk kasus-kasus di mana nilai yang diinginkan jikaa
benar tidak dapatfalse
ataunil
.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))
sumber
t
adalahnil
.