三目運(yùn)算符

(a and b) or c

local value = (a and b) or c
  • a 為條件語句 true或者false
  • 當(dāng)a為true則把b賦給value,當(dāng)a為false則把c賦給value

邏輯運(yùn)算符跳轉(zhuǎn)地址

↑如果邏輯運(yùn)算符沒弄清楚的先看如上地址

邏輯拆分

(a and b) or c
--以上邏輯可以拆分以下結(jié)果

假定 b c 不為nil

  • 當(dāng)a=true
當(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為空的情況會有bug

如何避免?

可以自定義一個函數(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)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 逗號運(yùn)算符 在JavaScript中逗號“,”也是一種運(yùn)算符,稱為逗號運(yùn)算符。 其功能是把多個表達(dá)式連接起來組成一...
    極客江南閱讀 2,266評論 10 24
  • 三目運(yùn)算符,計算機(jī)c語言的重要組成部分。條件運(yùn)算符是唯一有3個操作數(shù)的運(yùn)算符,所以有時又稱為三元運(yùn)算符 如果在條件...
    diveinljq閱讀 874評論 0 0
  • 三目運(yùn)算符,指的是計算機(jī)c語言的重要組成部分。條件運(yùn)算符是唯一有3個操作數(shù)的運(yùn)算符,所以有時又稱為三元運(yùn)算符。一般...
    周博通zbt閱讀 615評論 1 2
  • 《ilua》速成開發(fā)手冊3.0 官方用戶交流:iApp開發(fā)交流(1) 239547050iApp開發(fā)交流(2) 1...
    葉染柒丶閱讀 11,477評論 0 11
  • 向日葵_392e閱讀 262評論 0 4

友情鏈接更多精彩內(nèi)容