Lua的三目陷阱

2021-08-07 12:40:14 字數 415 閱讀 3695

lua 是沒有傳統意義上的三目運算子的,使用了以下格式代替

a and b or c
其中 a是 boolean型別

a為 true 則 返回b , 為false則返回 c

據測試,這裡有個陷阱,如果 b為nil ,則無論a 為任何值,整個表示式都會返回 c

這個陷阱在某些情況下十分的好用,比如在 字串拼接的時候,如果字串為nil,lua是要拋錯誤的,

result="str="..str    -- str=nil,報錯

這時可以用以下語句

result="str="..(true and str or "nil")    --成功執行
str是指向字串的變數

Lua的三目運算子

剛學習lua不久,以前我寫c或c 的時候,經常會用到三目運算子,形如 a b c 即a為真,表示式值為b,否則表示式值為c。但是最近在用lua寫邏輯時,突然發現不會使用lua的三目運算子,寫if else又很麻煩,量又很多,不夠整潔。所以,有必要學習一下lua中的三目運算子。lua語言中的邏輯運算子...

lua中的三目運算子

開頭先說結論 1.簡單版三目運算子 需要自我保證 b 不為 false a and b or c 2.通用版三目運算子 a and or 1 推導過程 我們首先需要知道lua中的以下幾點規則 1.lua中只有 false 和 nil 視為 假 其他任何一切都為 真 包括 0 2.對於運算子 and ...

lua中的table使用陷阱

最近在使用lua開發的過程中,遇到了乙個由於語言機制導致的bug,具體表現就是,我的配置檔案中存了個兩個表項,在用lua載入配置檔案內容之後,返回的表長度竟然是1,然後導致後面的判斷都出錯了,在初次除錯這個bug的時候完全是百思不得其解,把配置檔案看了又看,確實有兩個表項沒錯,但是通過 運算子得到的...