三目運算符

(a and b) or c

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

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

↑如果邏輯運算符沒弄清楚的先看如上地址

邏輯拆分

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

假定 b c 不為nil

  • 當a=true
當a 是true 則(a and b) 返回b

然后 判斷 b or c

b 和 c 都是要賦的值,理論上是不應該空的。

--如果b為true,則返回b,否則返回c

b or c => return b
  • 當a=false
當a是false

(a and b) => a

再判斷 a or c

a又是false

--如果a為true,則返回a,否則返回c

a or c => return c

假如 b c都是nil

  • 當a=true
當a 是true 則(a and b) 返回b

然后 判斷 b or c

b 和 c 都是nil => false

--如果b為true,則返回b,否則返回c
b or c => return c
  • 當a=false
當a是false

(a and b) => a

再判斷 a or c

a又是false

--如果a為true,則返回a,否則返回c
a or c => return c

當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)
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容

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