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的功能,詳情請百度。
還有很多
暫時先寫到這兒。。