當(dāng)a 是true 則(a and b) 返回b
然后 判斷 b or c
b 和 c 都是要賦的值职抡,理論上是不應(yīng)該空的般妙。
--如果b為true俺泣,則返回b切平,否則返回c
b or c => return b
當(dāng)a=false
當(dāng)a是false
(a and b) => a
再判斷 a or c
a又是false
--如果a為true头谜,則返回a私爷,否則返回c
a or c => return c
假如 b c都是nil
當(dāng)a=true
當(dāng)a 是true 則(a and b) 返回b
然后 判斷 b or c
b 和 c 都是nil => false
--如果b為true,則返回b斗躏,否則返回c
b or c => return c
當(dāng)a=false
當(dāng)a是false
(a and b) => a
再判斷 a or c
a又是false
--如果a為true逝慧,則返回a,否則返回c
a or c => return c
當(dāng)b或者c為空的情況會(huì)有bug
如何避免?
可以自定義一個(gè)函數(shù)
function GetTernaryValue( ... )
local bool = select(1, ...)
local arg1 = select(2, ...)
local arg2 = select(3, ...)
if bool then
return arg1
else
return arg2
end
end
local value = GetTernaryValue(false,2,4)
print(value)