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的時候完全是百思不得其解,把配置檔案看了又看,確實有兩個表項沒錯,但是通過 運算子得到的...