Có cách nào để sử dụng điều kiện nội tuyến trong Lua không?
Nhu la:
print("blah: " .. (a == true ? "blah" : "nahblah"))
Câu trả lời:
Chắc chắn rồi:
print("blah: " .. (a and "blah" or "nahblah"))
(cond and false-value or x)
Điều đó sẽ dẫn đến x
trong mọi trường hợp.
a and false or true
sẽ không đưa ra câu trả lời giống như not a
. Thành ngữ này thường được sử dụng cho các trường hợp giá trị mong muốn if a
là true không thể là false
or nil
.
a and assert(b) or c
.
Nếu a and t or f
không phù hợp với bạn, bạn luôn có thể tạo một hàm:
function ternary ( cond , T , F )
if cond then return T else return F end
end
print("blah: " .. ternary(a == true ,"blah" ,"nahblah"))
tất nhiên, sau đó bạn có điểm rút ra là T và F luôn được đánh giá .... để giải quyết vấn đề đó bạn cần cung cấp các hàm cho hàm bậc ba của mình và điều đó có thể trở nên khó sử dụng:
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
là nil
.