Lua寫法技巧雜談

Lua是枚很小巧的語言,各種語法沒有像C++等靜態語言那麼複雜和繁瑣。

相比起來,Lua顯得非常的靈活和簡單。

但是也正是因爲Lua“簡單”,所以它才“複雜”。

如果不認真嚴謹的規範好Lua的寫法,它可能漏洞百出,加上編輯器大多沒有像C++,C#,java那樣的提示和補全,

所以Lua寫起來並不是那麼的簡單,稍不注意就可能有很多想不到的Bug。

 

總結一下最近開始寫Lua的各方面的小技巧和需要注意的地方。

 

寫lua的模塊時,注意最後一般都要return 這個模塊,剛開始寫lua的時候,常常沒有return這個模塊,導致經常報錯。

 

Lua裏面,只要不加local,那麼這個變量就一定是全局的變量,這個一定要注意,因爲不注意的話出Bug了你根本不知道在哪錯了。

 

因爲Lua有函數閉包的特性,所以如果只有一個地方或一個變量或一個功能用到這個函數時,最好寫成閉包,如果有不同的地方需要調用那麼就寫到外面。不然代碼會很醜,查看起來也很不方法,再加是lua。。(個人感覺)

 

類中self變量在滿足功能的條件下,越少越好,能用局部變量保存self中的變量最好就用菊部變量,不然到時候self:和self.滿天飛。。

 

爲什麼Lua裏面沒有switch語句?

因爲Lua有表這個東西,所有switch的地方都可以用table去替代,靈活用上table索引的這個功能,凡是有大量elseif,elseif的地方(這樣寫很醜。。)也可以用table去替代

 

通常情況下,我們一般用self.xxxx表示這個self是一個類,xxxx是它的成員。self[xxx]表示這是一個索引表,xxx是它的索引關鍵字。這樣寫可以幫助我們去理解和區分。當然也可以兩者結合使用。

 

特別要注意table和數字的結合使用。比如

local x = 111
local y = "111"

self[x]
self[y]
self.y

特別要注意它們之間的區別,數字是字符去索引是不一樣的。尤其是當其他語言的數據結構轉成Lua的數據結構時,一定要很好的去區別,區分。

 

相對於C#來說lua裏面的引用類型是table,其他都是值類型

相對於C++來說,除了table是淺拷貝,其他的都是直接copy一份新的。

 

元表中的__index和__newindex,前者對應功能爲查找(讀取),後者爲賦值(寫入)

可以用這兩個來完成面向對象的類的繼承體系,而後者也可以用來實現C#裏面屬性的set的功能,詳情請百度。

 

還有很多

暫時先寫到這兒。。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章