解決Lua語法缺失及替代措施
解決Lua語法缺失及替代措施是本文要介紹的內(nèi)容,主要是來了解LUA語法的學(xué)習(xí)。Lua的一個(gè)設(shè)計(jì)方針是簡(jiǎn)單,能不加入的語言特性就盡量不加入。于是,Lua中缺少了一些我們常用的語法。下面僅以C語言做參考。
缺少continue語句,雖然對(duì)邏輯實(shí)現(xiàn)沒本質(zhì)影響。但讓我們?cè)诰幊虝r(shí),代碼結(jié)構(gòu)的寫法有一些生硬的感覺,不靈活。
缺少了switch-case語法,僅用if-elseif-else來替代,在選項(xiàng)比較多的時(shí)候,代碼很難看,而且效率很低。
沒有邏輯運(yùn)算符 AND, OR, NOT ,這在有些標(biāo)志位組合表達(dá)式的表達(dá)上帶來諸多不便。
另外也說一下,覺得Lua里面設(shè)計(jì)得不爽的幾點(diǎn):
不等號(hào)是~=, 而不是!=。個(gè)人覺得!=表達(dá)不等于的意思更準(zhǔn)確點(diǎn),~更多的意思是“非”,“非”與“不等于”還是有區(qū)別的。當(dāng)然,這可能是作者與我們喜好不同的原因了。
默認(rèn)除法時(shí)是浮點(diǎn)除,而沒有相應(yīng)的整除運(yùn)算,要獲取整數(shù)還得使用math庫(kù)的截取函數(shù)。
Continue語句通過打一個(gè)補(bǔ)丁實(shí)現(xiàn)了。
邏輯運(yùn)算,!=運(yùn)算符,邏輯運(yùn)算符,位運(yùn)算符,移位運(yùn)算符也通過打一個(gè)補(bǔ)丁實(shí)現(xiàn)了。
但是Lua的官網(wǎng)上沒找到Switch的補(bǔ)丁,找了一下,發(fā)現(xiàn)可以用Lua自身的表特性實(shí)現(xiàn),而且很優(yōu)雅哦。
Switch語句的替代語法(所有替代方案中覺得***,最簡(jiǎn)潔,***效,最能體現(xiàn)Lua特點(diǎn)的一種方案)
- action = {
- [1] = function (x) print(x) end,
- [2] = function (x) print( 2 * x ) end,
- ["nop"] = function (x) print(math.random()) end,
- ["my name"] = function (x) print("fred") end,
- }
- while true do
- key = getChar()
- x = math.ramdon()
- action[key](x)
- end
小結(jié):解決Lua語法缺失及替代措施的內(nèi)容介紹完了,希望通過本文的學(xué)習(xí)能對(duì)你有所幫助!