解決Lua語法缺失及替代措施

解決Lua語法缺失及替代措施是本文要介紹的內容,主要是來了解LUA語法的學習。Lua的一個設計方針是簡單,能不加入的語言特性就儘量不加入。於是,Lua中缺少了一些我們常用的語法。下面僅以C語言做參考。

缺少continue語句,雖然對邏輯實現沒本質影響。但讓我們在編程時,代碼結構的寫法有一些生硬的感覺,不靈活。

缺少了switch-case語法,僅用if-elseif-else來替代,在選項比較多的時候,代碼很難看,而且效率很低。

沒有邏輯運算符 AND, OR, NOT ,這在有些標誌位組合表達式的表達上帶來諸多不便。

另外也說一下,覺得Lua裏面設計得不爽的幾點:

不等號是~=, 而不是!=。個人覺得!=表達不等於的意思更準確點,~更多的意思是“非”,“非”與“不等於”還是有區別的。當然,這可能是作者與我們喜好不同的原因了。

默認除法時是浮點除,而沒有相應的整除運算,要獲取整數還得使用math庫的截取函數。

Continue語句通過打一個補丁實現了。

邏輯運算,!=運算符,邏輯運算符,位運算符,移位運算符也通過打一個補丁實現了。

但是Lua的官網上沒找到Switch的補丁,找了一下,發現可以用Lua自身的表特性實現,而且很優雅哦。

Switch語句的替代語法(所有替代方案中覺得最好,最簡潔,最高效,最能體現Lua特點的一種方案)

  1. action = {  
  2.   [1] = function (x) print(x) end,  
  3.   [2] = function (x) print( 2 * x ) end,  
  4.   ["nop"] = function (x) print(math.random()) end,  
  5.   ["my name"] = function (x) print("fred") end,  
  6. }  
  7.  
  8. while true do  
  9.     key = getChar()  
  10.     x = math.ramdon()  
  11.     action[key](x)  
  12. end 
  13. 轉載自:http://www.cnblogs.com/orez88/articles/2171311.html



發佈了17 篇原創文章 · 獲贊 63 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章