解決Lua語法缺失及替代措施是本文要介紹的內容,主要是來了解LUA語法的學習。Lua的一個設計方針是簡單,能不加入的語言特性就儘量不加入。於是,Lua中缺少了一些我們常用的語法。下面僅以C語言做參考。
缺少continue語句,雖然對邏輯實現沒本質影響。但讓我們在編程時,代碼結構的寫法有一些生硬的感覺,不靈活。
缺少了switch-case語法,僅用if-elseif-else來替代,在選項比較多的時候,代碼很難看,而且效率很低。
沒有邏輯運算符 AND, OR, NOT ,這在有些標誌位組合表達式的表達上帶來諸多不便。
另外也說一下,覺得Lua裏面設計得不爽的幾點:
不等號是~=, 而不是!=。個人覺得!=表達不等於的意思更準確點,~更多的意思是“非”,“非”與“不等於”還是有區別的。當然,這可能是作者與我們喜好不同的原因了。
默認除法時是浮點除,而沒有相應的整除運算,要獲取整數還得使用math庫的截取函數。
Continue語句通過打一個補丁實現了。
邏輯運算,!=運算符,邏輯運算符,位運算符,移位運算符也通過打一個補丁實現了。
但是Lua的官網上沒找到Switch的補丁,找了一下,發現可以用Lua自身的表特性實現,而且很優雅哦。
Switch語句的替代語法(所有替代方案中覺得最好,最簡潔,最高效,最能體現Lua特點的一種方案)
- 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
- 轉載自:http://www.cnblogs.com/orez88/articles/2171311.html